diff --git a/prog2-codebase/.metadata/.lock b/prog2-codebase/.metadata/.lock new file mode 100644 index 0000000..e69de29 diff --git a/prog2-codebase/.metadata/.log b/prog2-codebase/.metadata/.log new file mode 100644 index 0000000..8fdb582 --- /dev/null +++ b/prog2-codebase/.metadata/.log @@ -0,0 +1,767 @@ +!SESSION 2022-04-27 14:58:22.003 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -data C:\Users\birgi\Programmierung 2\GitTeam53\prog2-codebase -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-04-27 14:58:37.059 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 14:58:37.060 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@195498aa, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4b360972, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 14:58:37.060 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@793d09e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@68821f6, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-04-27 14:58:47.975 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-04-27 15:10:16.291 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-04-27 15:10:31.542 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 15:10:31.542 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@2beee3e8, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@732d078d, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 15:10:31.543 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@58bad46f, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7c0e4e4e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-04-27 15:10:46.359 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-04-27 15:54:40.727 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-04-27 15:54:55.237 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 15:54:55.237 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@58bad46f, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7c0e4e4e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 15:54:55.238 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@20231384, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3ba97962, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-04-27 15:55:10.227 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-04-27 19:46:45.346 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-04-27 19:47:00.046 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 19:47:00.047 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@495da9a7, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@2beee3e8, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-27 19:47:00.047 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@732d078d, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@58bad46f, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-04-27 19:47:14.603 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-04-29 10:09:47.134 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-04-29 10:10:06.393 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-29 10:10:06.394 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7c0e4e4e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@20231384, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-04-29 10:10:06.394 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3ba97962, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@35becbd4, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-04-29 10:10:24.248 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-04 15:35:59.780 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-04 15:36:18.101 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-04 15:36:18.101 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@495da9a7, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@2beee3e8, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-04 15:36:18.102 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@732d078d, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@58bad46f, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-04 15:36:33.580 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-05 13:56:17.030 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-05 13:56:34.566 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-05 13:56:34.567 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@c0013b8, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@2c1ea7be, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-05 13:56:34.567 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@2493eec6, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@42d174ad, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-05 13:56:49.687 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-05 14:43:17.629 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-05 14:43:32.847 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-05 14:43:32.848 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3bcc8f13, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3cb04dd, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-05 14:43:32.848 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@73d91faf, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@30fa8a6b, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-05 14:43:48.632 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. + +!ENTRY org.eclipse.egit.core 4 0 2022-05-05 14:43:51.699 +!MESSAGE Remove repository mapping of Git mapped resource for which project or mapped git repository has disappeared: 'RepositoryMapping[ -> '../.git', absolute path: 'C:/Users/birgi/Programmierung 2/GitTeam53/prog2-codebase/.git' ]' +!STACK 0 +java.io.FileNotFoundException: + at org.eclipse.egit.core.project.GitProjectData.logAndUnmapGoneMappedResource(GitProjectData.java:751) + at org.eclipse.egit.core.project.GitProjectData.map(GitProjectData.java:714) + at org.eclipse.egit.core.project.GitProjectData.remapAll(GitProjectData.java:678) + at org.eclipse.egit.core.project.GitProjectData.load(GitProjectData.java:661) + at org.eclipse.egit.core.project.GitProjectData.get(GitProjectData.java:217) + at org.eclipse.egit.core.project.RepositoryMapping.getProjectData(RepositoryMapping.java:335) + at org.eclipse.egit.core.project.RepositoryMapping.findMapping(RepositoryMapping.java:356) + at org.eclipse.egit.core.project.RepositoryMapping.getMapping(RepositoryMapping.java:296) + at org.eclipse.egit.core.internal.util.ResourceUtil.getRepository(ResourceUtil.java:708) + at org.eclipse.egit.core.internal.info.GitItemStateFactory.getIndexDiffDataOrNull(GitItemStateFactory.java:106) + at org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator.decorateResource(GitLightweightDecorator.java:194) + at org.eclipse.egit.ui.internal.decorators.GitLightweightDecorator.decorate(GitLightweightDecorator.java:172) + at org.eclipse.ui.internal.decorators.LightweightDecoratorDefinition.decorate(LightweightDecoratorDefinition.java:250) + at org.eclipse.ui.internal.decorators.LightweightDecoratorManager$LightweightRunnable.run(LightweightDecoratorManager.java:105) + at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:45) + at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.decorate(LightweightDecoratorManager.java:360) + at org.eclipse.ui.internal.decorators.LightweightDecoratorManager.getDecorations(LightweightDecoratorManager.java:346) + at org.eclipse.ui.internal.decorators.DecorationScheduler$1.queue(DecorationScheduler.java:419) + at org.eclipse.ui.internal.decorators.DecorationScheduler$1.run(DecorationScheduler.java:397) + at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) +!SESSION 2022-05-06 15:16:47.190 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-06 15:17:05.372 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:17:05.372 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@35becbd4, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3bcc8f13, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:17:05.372 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3cb04dd, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@73d91faf, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-06 15:17:22.258 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-06 15:27:29.195 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-06 15:27:44.698 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:27:44.698 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@732d078d, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@58bad46f, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:27:44.699 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@7c0e4e4e, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@20231384, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-06 15:28:02.161 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-06 15:41:06.871 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-06 15:41:22.081 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:41:22.082 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4ec427, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4c8d45cf, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-06 15:41:22.082 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@fde487b, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4cc4d454, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-06 15:41:38.040 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-07 09:34:54.339 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-07 09:35:11.135 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-07 09:35:11.135 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@f3876ef, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@6b751cb1, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-07 09:35:11.135 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@df9d400, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4ec427, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-07 09:35:29.416 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-10 16:51:01.505 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-10 16:51:20.473 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-10 16:51:20.473 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@20231384, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3ba97962, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-10 16:51:20.473 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@35becbd4, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@3bcc8f13, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-10 16:51:38.994 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. +!SESSION 2022-05-10 18:50:36.438 ----------------------------------------------- +eclipse.buildId=4.23.0.I20220308-0310 +java.version=17.0.1 +java.vendor=Oracle Corporation +BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=de_DE +Framework arguments: -product org.eclipse.epp.package.java.product +Command-line arguments: -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product + +!ENTRY org.eclipse.jface 2 0 2022-05-10 18:50:52.879 +!MESSAGE Keybinding conflicts occurred. They may interfere with normal accelerator operation. +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-10 18:50:52.879 +!MESSAGE A conflict occurred for CTRL+SHIFT+T: +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.jdt.ui.navigate.open.type,Open Type, + Open a type in a Java editor, + Category(org.eclipse.ui.category.navigate,Navigate,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@df9d400, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(CTRL+SHIFT+T, + ParameterizedCommand(Command(org.eclipse.lsp4e.symbolinworkspace,Go to Symbol in Workspace, + , + Category(org.eclipse.lsp4e.category,Language Servers,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4ec427, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +!SUBENTRY 1 org.eclipse.jface 2 0 2022-05-10 18:50:52.879 +!MESSAGE A conflict occurred for ALT+SHIFT+R: +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.jdt.ui.edit.text.java.rename.element,Rename - Refactoring , + Rename the selected element, + Category(org.eclipse.jdt.ui.category.refactoring,Refactor - Java,Java Refactoring Actions,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@4c8d45cf, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) +Binding(ALT+SHIFT+R, + ParameterizedCommand(Command(org.eclipse.ui.edit.rename,Rename, + Rename the selected item, + Category(org.eclipse.ui.category.file,File,null,true), + org.eclipse.ui.internal.WorkbenchHandlerServiceHandler@fde487b, + ,,true),null), + org.eclipse.ui.defaultAcceleratorConfiguration, + org.eclipse.ui.contexts.window,,,system) + +!ENTRY org.eclipse.egit.ui 2 0 2022-05-10 18:51:10.337 +!MESSAGE Warning: The environment variable HOME is not set. The following directory will be used to store the Git +user global configuration and to define the default location to store repositories: 'C:\Users\birgi'. If this is +not correct please set the HOME environment variable and restart Eclipse. Otherwise Git for Windows and +EGit might behave differently since they see different configuration options. +This warning can be switched off on the Team > Git > Confirmations and Warnings preference page. diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1c/901e6f556dcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1c/901e6f556dcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..cc59738 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1c/901e6f556dcc001c1604bd95dc1c47bd @@ -0,0 +1,32 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f005f04172cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f005f04172cc001c1b99dc395638891e new file mode 100644 index 0000000..d103e39 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1e/f005f04172cc001c1b99dc395638891e @@ -0,0 +1,46 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1f/40a24f711ecd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1f/40a24f711ecd001c1b99dc395638891e new file mode 100644 index 0000000..e39b174 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/1f/40a24f711ecd001c1b99dc395638891e @@ -0,0 +1,53 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/22/806756696bcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/22/806756696bcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..a1d9748 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/22/806756696bcc001c1604bd95dc1c47bd @@ -0,0 +1,5 @@ +package playground; + +public class Level5 { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/23/d07df0721acd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/23/d07df0721acd001c1b99dc395638891e new file mode 100644 index 0000000..3ba8bb3 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/23/d07df0721acd001c1b99dc395638891e @@ -0,0 +1,58 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + public void applyGameLogic() { + super.applyGameLogic(); + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/24/d0d87bde6ecc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/24/d0d87bde6ecc001c1604bd95dc1c47bd new file mode 100644 index 0000000..7eddd13 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/24/d0d87bde6ecc001c1604bd95dc1c47bd @@ -0,0 +1,35 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/29/30d34bcf6ccc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/29/30d34bcf6ccc001c1604bd95dc1c47bd new file mode 100644 index 0000000..07b9fbb --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/29/30d34bcf6ccc001c1604bd95dc1c47bd @@ -0,0 +1,32 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/2b/403433d91dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/2b/403433d91dcd001c1b99dc395638891e new file mode 100644 index 0000000..4d16fb5 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/2b/403433d91dcd001c1b99dc395638891e @@ -0,0 +1,675 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * Class that realizes all the game logic of a very simple game level. The level contains for now + * only two objects that are {@link GameObject} subclasses: {@link FallingStar} and + * {@link EgoObject}. Functions performed by this class are: + * + */ +public class SpaceInvadersLevel extends Playground { + + public static final double SHOTSPEED = 175; + public static final double EGOSPEED = 220; + protected static final int LEVEL2STARS = 80; + protected static final double BONUS_DURATION = 1.; + protected static final double ENEMYSPEEDX = 60; + protected static final double ENEMYSPEEDY = 40; + protected static final double ENEMYSCALE = 1.0; + protected static final double ENEMYSHOTSPEED = 75; + protected static final int NRSHARDS = 50; + protected static final double EXPL_DURATION = 1.; + protected static final int NR_ENEMIES = 30; + protected static final int NR_COLLECT = 5; + protected static final Color EXPL_COLOR = Color.RED; + protected static final double SHARDSPEED = 200; + protected static final double STARSPEED = 100; + protected static final double STARTTEXTSPEED = 75; + protected static final double STARTPERIOD = 5.; + protected static final double DYING_INTERVAL = 2.0; + protected static final int CANVASX = 700; + protected static final int CANVASY = 700; + protected static final double EGORAD = 15; + protected static final double LEVEL_INIT_TIME = 1.0; + + protected int nextShot = 0; + + protected boolean lost = false; + protected boolean doneLevel = false; + protected double starttime = 0; + protected File smash = null; + protected File laser = null; + + protected BufferedImage[] alienImage = null; + protected double[] alienshowTime = null; + + protected BufferedImage[] heartImage = null; + protected double[] heartshowTime = null; + + protected Animation enemyAnim = null; + protected Animation heartAnim = null; + + private static Logger logger = LogManager.getLogger(SpaceInvadersLevel.class); + + public SpaceInvadersLevel() { + super(); + this.canvasX = this.preferredSizeX(); + this.canvasY = this.preferredSizeY(); + } + + + /** + * initially sets up the level. Not called by user interaction, but called every time a layer is + * restarted from scratch. So make sure that this is possible. Here, resources are loaded only + * once even if method is called several times. + * + * @param id String identifies level. + */ + @Override + public void prepareLevel(String id) { + logger.info("PREPARE"); + reset(); + this.doneLevel = false; + this.lost = false; + resetFlags(FLAGS_LEVEL); + + // set up flags that some objects rely on + setLevelFlag("delete", new LinkedList()); + setLevelFlag("replace", new LinkedList()); + getOrCreateGlobalFlag("points", Integer.valueOf(0)); + setLevelFlag("enemyShotCounter", Integer.valueOf(0)); + setLevelFlag("gameStatus", "start"); + setLevelFlag("detailedStatus", "std"); + getOrCreateGlobalFlag("egoLives", Integer.valueOf(5)); + setLevelFlag("dying", Double.valueOf(-1)); + + // start time measure + this.starttime = this.getGameTime(); + + // music load + if (this.smash == null) { + this.smash = new File("./audio/smash.wav"); + } + if (this.laser == null) { + this.laser = new File("./audio/laser.wav"); + } + + // ----- Alien + if (this.enemyAnim == null) { + String dateiName = "./video/sweetAlien.txt"; + this.enemyAnim = new Animation(dateiName); + } + + // -----Heart + if (this.heartAnim == null) { + String heartName = "./video/heart.txt"; + this.heartAnim = new Animation(heartName); + } + + // load highscore and update + HighscoreManager dh = new HighscoreManager(); + int alltimeHighscore = dh.readHSFromFile(); + setGlobalFlag("highscore", alltimeHighscore); + logger.info("HIGHSCORE" + alltimeHighscore); + } + + + /** + * (re)draws the level but NOT the objects, they draw themselves. Called by the main game loop. + * This method mainly draws the background and the scoreboard. + * + * @param g2 Graphics2D object that can, and should be, draw on. + */ + @Override + public void redrawLevel(Graphics2D g2) { + // Set anti-alias! + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + // Set anti-alias for text + g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); + + // fill background with black + int[] x = {0, canvasX, canvasX, 0}; + int[] y = {0, 0, canvasY, canvasY}; + Polygon bg = new Polygon(x, y, 4); + g2.setColor(Color.BLACK); + g2.fill(bg); + + // draw score in upper left part of playground + Integer pts = (Integer) getGlobalFlag("points"); + Font drawFont = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as = new AttributedString("Points: " + pts); + as.addAttribute(TextAttribute.FONT, drawFont); + as.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as.getIterator(), 10, 20); + + // draw lives counter in upper left part of playground + Integer lives = (Integer) getGlobalFlag("egoLives"); + Font drawFont2 = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as2 = new AttributedString("Lives: " + lives); + as2.addAttribute(TextAttribute.FONT, drawFont2); + as2.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as2.getIterator(), canvasX - 100, 20); + + // draw highscore in left part of playground under score + Integer highscore = (Integer) getGlobalFlag("highscore"); + Font drawFont3 = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as3 = new AttributedString("Highscore: " + highscore); + as3.addAttribute(TextAttribute.FONT, drawFont3); + as3.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as3.getIterator(), 10, 40); + + if (isPaused()) { + Font drawFont4 = new Font("SansSerif", Font.PLAIN, 50); + AttributedString as4 = new AttributedString("Das Spiel wurde pausiert."); + as4.addAttribute(TextAttribute.FONT, drawFont4); + as4.addAttribute(TextAttribute.FOREGROUND, Color.red); + g2.drawString(as4.getIterator(), 30, 400); + } + + } + + + /** + * applies the logic of the level: For now, this is just about deleting shots that are leaving the + * screen and calling methods 'actionIf..' in case objects collide. + * + */ + @Override + public void applyGameLogic() { + double gameTime = this.getGameTime(); + String gameStatus = (String) getLevelFlag("gameStatus"); + String subStatus = (String) getLevelFlag("detailedStatus"); + + if (gameStatus.equals("start") == true) { + setupInitialState(); + + } else if (gameStatus.equals("starting") == true) { + + if ((gameTime - starttime) > LEVEL_INIT_TIME) { + setLevelFlag("gameStatus", "init"); + } + + } else if (gameStatus.equals("init") == true) { + + this.createEnemies(); + this.createCollectables(); + + setLevelFlag("gameStatus", "playing"); + + } else if (gameStatus.equals("playing") == true) { + GameObject s = this.getObject("ego"); + + if (subStatus.equals("std")) { + + // check for collisions of enemy and shots, reuse shots list from before.. + LinkedList enemies = collectObjects("enemy", false); + + // check whether all enemies have been destroyed or escaped + if (enemies.size() == 0) { + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + this.doneLevel = true; + logger.info("no enemies left, level done."); + } + + // loop over enemies to check for collisions or suchlike ... + LinkedList shots = collectObjects("simpleShot", true); + for (GameObject e : enemies) { + // if ego collides with enemy.. + if (s.collisionDetection(e)) { + actionIfEgoCollidesWithEnemy(e, s); + } + + // if shot collides with enemy + for (GameObject shot : shots) { + if (e.collisionDetection(shot)) { + actionIfEnemyIsHit(e, shot); + } + } + } + + // collecting hearts + LinkedList collects = collectObjects("collect", false); + for (GameObject c : collects) { + if (s.collisionDetection(c)) { + actionIfEgoCollidesWithCollect(c, s); + } + } + + // loop over enemies and, with a certain probability, launch an enemy shot for each one + for (GameObject e : enemies) { + createEnemyShot(e); + } + + // check for collisions between ego object and enemy shots + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject eshot : eshots) { + + if (s.collisionDetection(eshot)) { + logger.trace("COLLISION" + eshot.scol.get(0) + "/" + s.scol.get(0)); + actionIfEgoObjectIsHit(eshot, s); + } + } + } // if substatus.. + else if (subStatus.equals("dying")) { + Double t0 = (Double) getLevelFlag("t0"); + if (gameTime - t0 > DYING_INTERVAL) { + LinkedList enemies = collectObjects("enemy", false); + setLevelFlag("detailedStatus", "std"); + s.setActive(true); + + for (GameObject e : enemies) { + logger.trace("activating" + e.getId()); + e.setActive(true); + } + } + } + + } // if (gameStatus == "playing") + + + } + + + public boolean gameOver() { + return lost; + } + + + public boolean levelFinished() { + return doneLevel; + } + + + /** + * calculates and returns the preferred size of the level (in pixel) for X-direction + */ + public int preferredSizeX() { + return CANVASX; + } + + /** + * calculates and returns the preferred size of the level (in pixel) for Y-direction + */ + public int preferredSizeY() { + return CANVASY; + } + + + /** Adds ego object and stars and displays startup message. Is called from applyGameLogic */ + protected void setupInitialState() { + double gameTime = this.getGameTime(); + setLevelFlag("gameStatus", "starting"); + + this.createStars(); + + // set up ego object + this.createEgoObject(); + + // add text object to playground + ObjectController ctrl = new LimitedTimeController(gameTime, 3.); + GameObject readyText = new TextObject("ready?", this, getSizeX() / 2, 0, 0, 100, + this.getStartupMessage(), 50, Color.RED).addController(ctrl); + addObject(readyText); + + } + + + /** + * simply returns the text that should be displayed at level start + * + * @return a string that is displayed at start. Should be not longer than 30 characters. + */ + protected String getStartupMessage() { + return "Get ready for level X!"; + } + + + /** + * returns a number representing the speed of an enemy object in X direction (pixels/second) + * + * @return a positive value + */ + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + + /** + * returns a number representing the speed of an enemy object in Y direction (pixels/second) + * + * @return a positive value + */ + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } + + /** + * returns the maximum number of enemy instances (which are created at level start) + * + * @return a positive value + */ + protected int calcNrEnemies() { + return SpaceInvadersLevel.NR_ENEMIES; + } + + /** + * returns the maximum number of collectables' instances (which are created at level start) + * + * @return a positive value + */ + protected int calcNrCollect() { + return SpaceInvadersLevel.NR_COLLECT; + } + + + protected GameObject createEnemyShotObject(GameObject parentObject, String name, + ObjectController limitedTimeController) { + GameObject to = + new TextObject(name, this, parentObject.getX(), parentObject.getY(), 0, ENEMYSHOTSPEED, "I", + 20, Color.YELLOW).generateColliders().addController(limitedTimeController); + /* + * // also possible: GameObject to = new RectObject(name, this, parentObject.getX(), + * parentObject.getY(), 0, ENEMYSHOTSPEED, 4, 20, + * Color.YELLOW).addController(limitedTimeController) ; to.generateColliders(); + */ + return to; + } + + + protected void createEnemyShot(GameObject e) { + double gameTime = this.getGameTime(); + + double PROB = calcEnemyShotProb(); + double diceThrow = Math.random(); + Integer nrEnemyShots = (Integer) (getLevelFlag("enemyShotCounter")); + if (diceThrow < PROB) { + setLevelFlag("enemyShotCounter", Integer.valueOf(++nrEnemyShots)); + + LimitedTimeController limitedTimeController = new LimitedTimeController(gameTime, 10.); + + GameObject textObject = + createEnemyShotObject(e, "enmyShot" + nrEnemyShots, limitedTimeController); + + addObject(textObject); + } + } + + + /** + * calculates and returns the probability that an enemy shots. Used by + * {@link SpaceInvadersLevel#createEnemyShot(GameObject)}. + * + * @return a positive value between 0 (no chance) to 1 (for sure). + */ + double calcEnemyShotProb() { + return 0.1 * this.getTimestep(); + } + + + ObjectController createEnemyController() { + return new EnemyController(); + } + + + GameObject createSingleEnemy(String name, double x_enemy, double y_enemy, double vx_enemy, + double vy_enemy, ObjectController enemyController, double gameTime) { + + GameObject tmp = + new AnimatedGameobject(name, this, x_enemy, y_enemy, vx_enemy, vy_enemy, ENEMYSCALE, + this.enemyAnim, gameTime, "loop").addController(enemyController).generateColliders(); + return tmp; + } + + GameObject createSingleCollect(String name) { + double gameTime = this.getGameTime(); + double cspeedy = 20.; + double x_collect = Math.random() * this.canvasX; + double y_collect = Math.random() * this.canvasY / 3; + double vx_collect = 2 * (Math.random() - 0.5) * 0; + double vy_collect = Math.random() * cspeedy; + + GameObject tmp = new AnimatedGameobject(name, this, x_collect, y_collect, vx_collect, + vy_collect, 0.3, this.heartAnim, gameTime, "loop").generateColliders() + .addController(new EnemyController()); + return tmp; + } + + + void createEnemies() { + // create enemies + double gameTime = this.getGameTime(); + double speedx = this.calcEnemySpeedX(); + double speedy = this.calcEnemySpeedY(); + for (int i = 0; i < this.calcNrEnemies(); i++) { + double x_enemy = Math.random() * this.canvasX; + double y_enemy = Math.random() * this.canvasY / 3; + double vx_enemy = 2 * (Math.random() - 0.5) * speedx; + double vy_enemy = Math.random() * speedy; + + ObjectController enemyController = createEnemyController(); + GameObject enemy = createSingleEnemy("enemy" + i, x_enemy, y_enemy, vx_enemy, vy_enemy, + enemyController, gameTime); + addObject(enemy); + } + } + + void createCollectables() { + // create collectables + for (int i = 0; i < this.calcNrCollect(); i++) { + + + GameObject collect = createSingleCollect("collect" + i); + + addObject(collect); + } + } + + + void createEgoObject() { + // add ego to playground at lower bottom + EgoController egoController = + new CollisionAwareEgoController(SpaceInvadersLevel.EGORAD, this.laser); + + GameObject ego = new EgoObject("ego", this, canvasX / 2, canvasY - (EGORAD * 2), 0, 0, EGORAD) + .addController(egoController).generateColliders(); + + addObject(ego); + } + + + void createStars() { + // add stars to playground + for (int i = 1; i <= LEVEL2STARS; i++) { + FallingStarController fsc = new FallingStarController(); + + GameObject star = new FallingStar("star" + i, this, Math.random() * canvasX, + Math.random() * 15, 0.0, Math.random() * STARSPEED, Color.WHITE, 1.).addController(fsc); + + addObject(star); + } + } + + + void createExplosion(double gameTime, GameObject e, String basename, double interval, + Color color) { + // spawn a cloud of exploded shards + for (int i = 0; i < NRSHARDS; i++) { + double vx = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVX(); + double vy = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVY(); + addObject( + new FallingStar("shard" + gameTime + "/" + i, this, e.getX(), e.getY(), vx, vy, color, 2) + .addController(new LimitedTimeController(gameTime, interval))); + } + } + + + /** + * implements game behavior if an enemy object is hit by a players' shot. It creates an explosion + * effect, plays a sound and adds 200 points to the current score (and it removes the enemy object + * and the shot object). + * + * @param e enemy which was hit + * @param shot the shot object that hit the enemy + */ + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + + double gameTime = this.getGameTime(); + createExplosion(gameTime, e, "shard", DYING_INTERVAL, Color.RED); + + Music.music(smash); + + // delete enemy + deleteObject(e.getId()); + + // delete shot + deleteObject(shot.getId()); + + // add to points counter + Integer pts = (Integer) getGlobalFlag("points"); + setGlobalFlag("points", pts + 200); + + } + + /** + * implements game behavior if ego object of player touches a collectable + * {@link gameobjects.GameObject }. Here it adds one extra life and displays a text for a limited + * time on screen "Extra life!!". The duration is set in constant + * {@link SpaceInvadersLevel#EXPL_DURATION}. + * + * + * @param collect item touched by ego + * @param ego the players ego object + */ + void actionIfEgoCollidesWithCollect(GameObject collect, GameObject ego) { + double gameTime = this.getGameTime(); + + if (this.getObject("bonustext") == null) { + + // spawn a bonus points object + double vx = 2 * (Math.random() - 0.5) * SHARDSPEED + collect.getVX(); + double vy = 2 * (Math.random() - 0.5) * SHARDSPEED + collect.getVY(); + + + LimitedTimeController bonusTextController = + new LimitedTimeController(gameTime, SpaceInvadersLevel.EXPL_DURATION); + GameObject bonusText = new TextObject("bonustext", this, collect.getX(), collect.getY(), vx, + vy, "Extra life!!", 20, Color.YELLOW).addController(bonusTextController); + + addObject(bonusText); + + // delete collect + deleteObject(collect.getId()); + + // add to points counter + Integer lives = (Integer) getGlobalFlag("egoLives"); + lives++; + setGlobalFlag("egoLives", lives); + } + + } + + /** + * implements behaviour of game when ego object is touching an enemy. It displays a text "AUAA!!" + * for a certain time on the game screen. Time span is defined as constant in + * {@link SpaceInvadersLevel#BONUS_DURATION } . + * + * @param enemy the enemy that was hit + * @param ego the ego object of the player + */ + void actionIfEgoCollidesWithEnemy(GameObject enemy, GameObject ego) { + + /** + * set temporary text over ego. This object lives only for a short time. While it lives, further + * collisions are ignored. Otherwise a single collision would result in a lot of deducted + * points... + */ + + double gameTime = this.getGameTime(); + GameObject auaObj = this.getObject("AUA-EGO"); + + if (auaObj == null) { + addObject(new TextObject("AUA-EGO", this, ego.getX(), ego.getY() - 20, ego.getVX(), + ego.getVY(), "AUAA!!", 10, Color.RED) + .addController(new LimitedTimeController(gameTime, BONUS_DURATION))); + // deduct points + Integer pts = (Integer) getGlobalFlag("points"); + setGlobalFlag("points", pts - 500); + } + + } + + /** + * implements what happens if the eog object of player is hit by a shot. It removes the shot from + * screen, reduces lives by 1, removes the ego and end current playing. + * + * @param eshot the shot object that hits the ego + * @param ego the ego object of the player + */ + void actionIfEgoObjectIsHit(GameObject eshot, GameObject ego) { + logger.debug("collision of " + eshot.getId() + " and " + ego.getId()); + + double gameTime = this.getGameTime(); + this.deleteObject(eshot.getId()); + + Integer oldLives = (Integer) getGlobalFlag("egoLives"); + int newLives = oldLives - 1; + setGlobalFlag("egoLives", newLives); + logger.debug("set egoLives to " + newLives + " (was " + oldLives + ")"); + + if (newLives <= 0) { + lost = true; + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + + } + + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject _eshot : eshots) { + deleteObject(_eshot.getId()); + } + setLevelFlag("detailedStatus", "dying"); + setLevelFlag("t0", gameTime); + ego.setActive(false); + createExplosion(gameTime, ego, "egoexp", DYING_INTERVAL, Color.WHITE); + LinkedList enemies = collectObjects("enemy", false); + for (GameObject enemy : enemies) { + enemy.setY(0); + enemy.setActive(false); + } + + } + + + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/3/003548c471cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/3/003548c471cc001c1b99dc395638891e new file mode 100644 index 0000000..1fdd35f --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/3/003548c471cc001c1b99dc395638891e @@ -0,0 +1,46 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/30eb63b61dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/30eb63b61dcd001c1b99dc395638891e new file mode 100644 index 0000000..98ec254 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/30eb63b61dcd001c1b99dc395638891e @@ -0,0 +1,149 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + public void applyGameLogic() { + double gameTime = this.getGameTime(); + String gameStatus = (String) getLevelFlag("gameStatus"); + String subStatus = (String) getLevelFlag("detailedStatus"); + + if (gameStatus.equals("start") == true) { + setupInitialState(); + + } else if (gameStatus.equals("starting") == true) { + + if ((gameTime - starttime) > LEVEL_INIT_TIME) { + setLevelFlag("gameStatus", "init"); + } + + } else if (gameStatus.equals("init") == true) { + + this.createEnemies(); + this.createCollectables(); + + setLevelFlag("gameStatus", "playing"); + + } else if (gameStatus.equals("playing") == true) { + GameObject s = this.getObject("ego"); + + if (subStatus.equals("std")) { + + // check for collisions of enemy and shots, reuse shots list from before.. + LinkedList enemies = collectObjects("enemy", false); + + // check whether all enemies have been destroyed or escaped + if (enemies.size() == 0) { + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + this.doneLevel = true; + logger.info("no enemies left, level done."); + } + + // loop over enemies to check for collisions or suchlike ... + LinkedList shots = collectObjects("simpleShot", true); + for (GameObject e : enemies) { + // if ego collides with enemy.. + if (s.collisionDetection(e)) { + actionIfEgoCollidesWithEnemy(e, s); + } + + // if shot collides with enemy + for (GameObject shot : shots) { + if (e.collisionDetection(shot)) { + actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + } + } + + // collecting hearts + LinkedList collects = collectObjects("collect", false); + for (GameObject c : collects) { + if (s.collisionDetection(c)) { + actionIfEgoCollidesWithCollect(c, s); + } + } + + // loop over enemies and, with a certain probability, launch an enemy shot for each one + for (GameObject e : enemies) { + createEnemyShot(e); + } + + // check for collisions between ego object and enemy shots + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject eshot : eshots) { + + if (s.collisionDetection(eshot)) { + logger.trace("COLLISION" + eshot.scol.get(0) + "/" + s.scol.get(0)); + actionIfEgoObjectIsHit(eshot, s); + } + } + } // if substatus.. + else if (subStatus.equals("dying")) { + Double t0 = (Double) getLevelFlag("t0"); + if (gameTime - t0 > DYING_INTERVAL) { + LinkedList enemies = collectObjects("enemy", false); + setLevelFlag("detailedStatus", "std"); + s.setActive(true); + + for (GameObject e : enemies) { + logger.trace("activating" + e.getId()); + e.setActive(true); + } + } + } + + } // if (gameStatus == "playing") + + + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0e5acc33dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0e5acc33dcd001c1b99dc395638891e new file mode 100644 index 0000000..f3c0806 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/37/b0e5acc33dcd001c1b99dc395638891e @@ -0,0 +1,53 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + protected static final int NR_ENEMIES = 21; + + protected static Logger logger = LogManager.getLogger(Level7.class); + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level7.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level7.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level7.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/42/00e43f796bcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/42/00e43f796bcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..0ff6579 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/42/00e43f796bcc001c1604bd95dc1c47bd @@ -0,0 +1,5 @@ +package playground; + +public class Level6 extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/45/10304a971dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/45/10304a971dcd001c1b99dc395638891e new file mode 100644 index 0000000..438bd4d --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/45/10304a971dcd001c1b99dc395638891e @@ -0,0 +1,57 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + public void applyGameLogic() { + super.applyGameLogic(); + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/5/f0cf763f6fcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/5/f0cf763f6fcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..434b36e --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/5/f0cf763f6fcc001c1604bd95dc1c47bd @@ -0,0 +1,34 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/56/a03bb2586dcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/56/a03bb2586dcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..092f6a2 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/56/a03bb2586dcc001c1604bd95dc1c47bd @@ -0,0 +1,32 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/57/d066739c81d0001c1725a54fc8b8a406 b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/57/d066739c81d0001c1725a54fc8b8a406 new file mode 100644 index 0000000..e56e595 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/57/d066739c81d0001c1725a54fc8b8a406 @@ -0,0 +1,23 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import rendering.RectArtist; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + } + + public void addObject(String id, Playground pg, double x, double y, double vx, double vy, double width, double height, Color color) { + GameObject rectangle= new GameObject(rectangle, pg, 350, 100, 0, 0, 700, 250, Color.RED); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/64/60ce11b973cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/64/60ce11b973cc001c1b99dc395638891e new file mode 100644 index 0000000..a5ba8e2 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/64/60ce11b973cc001c1b99dc395638891e @@ -0,0 +1,53 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6a/504e3d2081d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6a/504e3d2081d0001c10e4aba650691eec new file mode 100644 index 0000000..9314f3c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6a/504e3d2081d0001c10e4aba650691eec @@ -0,0 +1,16 @@ +package playground; + +import java.awt.Color; + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6b/20ecd63c3dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6b/20ecd63c3dcd001c1b99dc395638891e new file mode 100644 index 0000000..df60408 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6b/20ecd63c3dcd001c1b99dc395638891e @@ -0,0 +1,53 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6d/00843fc96ccc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6d/00843fc96ccc001c1604bd95dc1c47bd new file mode 100644 index 0000000..367dbda --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6d/00843fc96ccc001c1604bd95dc1c47bd @@ -0,0 +1,29 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6e/e067935871d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6e/e067935871d0001c10e4aba650691eec new file mode 100644 index 0000000..85e4f70 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6e/e067935871d0001c10e4aba650691eec @@ -0,0 +1,5 @@ +package playground; + +public class LevelWithBox extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306b09567dd0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306b09567dd0001c10e4aba650691eec new file mode 100644 index 0000000..b24c572 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/6f/306b09567dd0001c10e4aba650691eec @@ -0,0 +1,18 @@ +package playground; + +import gameobjects.GameObject; +import java.awt.Color; + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + addObject(); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/70/10e23dd071cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/70/10e23dd071cc001c1b99dc395638891e new file mode 100644 index 0000000..ad41744 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/70/10e23dd071cc001c1b99dc395638891e @@ -0,0 +1,45 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/73/601e21846ccc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/73/601e21846ccc001c1604bd95dc1c47bd new file mode 100644 index 0000000..8ef0699 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/73/601e21846ccc001c1604bd95dc1c47bd @@ -0,0 +1,29 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/74/002666cf3dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/74/002666cf3dcd001c1b99dc395638891e new file mode 100644 index 0000000..fe0ad0c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/74/002666cf3dcd001c1b99dc395638891e @@ -0,0 +1,60 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/83/90212ccb79d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/83/90212ccb79d0001c10e4aba650691eec new file mode 100644 index 0000000..c470451 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/83/90212ccb79d0001c10e4aba650691eec @@ -0,0 +1,7 @@ +package playground; + +import gameobjects.GameObject; + +public class LevelWithBox extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/92/b0a34b4a6fcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/92/b0a34b4a6fcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..166da0e --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/92/b0a34b4a6fcc001c1604bd95dc1c47bd @@ -0,0 +1,35 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/98/a0f0b8e570d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/98/a0f0b8e570d0001c10e4aba650691eec new file mode 100644 index 0000000..6f1770d --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/98/a0f0b8e570d0001c10e4aba650691eec @@ -0,0 +1,5 @@ +package playground; + +public class LevelWithBox { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/40d094457ed0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/40d094457ed0001c10e4aba650691eec new file mode 100644 index 0000000..bf5503c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/40d094457ed0001c10e4aba650691eec @@ -0,0 +1,18 @@ +package playground; + +import gameobjects.GameObject; +import rendering.RectArtist; +import java.awt.Color; + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d0d89e4572d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d0d89e4572d0001c10e4aba650691eec new file mode 100644 index 0000000..88a0947 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9a/d0d89e4572d0001c10e4aba650691eec @@ -0,0 +1,36 @@ +package playground; + +import gameobjects.GameObject; + +public class LevelWithBox extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "LevelWithBox, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return LevelWithBox.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return LevelWithBox.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return LevelWithBox.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9c/a028730a72cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9c/a028730a72cc001c1b99dc395638891e new file mode 100644 index 0000000..57b9738 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9c/a028730a72cc001c1b99dc395638891e @@ -0,0 +1,47 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9d/e0d29c826dcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9d/e0d29c826dcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..166da0e --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9d/e0d29c826dcc001c1604bd95dc1c47bd @@ -0,0 +1,35 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9f/70d75ce118cd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9f/70d75ce118cd001c1b99dc395638891e new file mode 100644 index 0000000..a97b8a2 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/9f/70d75ce118cd001c1b99dc395638891e @@ -0,0 +1,52 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a0/d0b36dd83dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a0/d0b36dd83dcd001c1b99dc395638891e new file mode 100644 index 0000000..113a655 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a0/d0b36dd83dcd001c1b99dc395638891e @@ -0,0 +1,58 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + protected static final int NR_ENEMIES = 21; + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + + } + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level7.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level7.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level7.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a2/30560b9271cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a2/30560b9271cc001c1b99dc395638891e new file mode 100644 index 0000000..2f7c970 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a2/30560b9271cc001c1b99dc395638891e @@ -0,0 +1,47 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 1000; + protected static final double ENEMYSPEEDY = 2000; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a2/f0dff9a16acc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a2/f0dff9a16acc001c1604bd95dc1c47bd new file mode 100644 index 0000000..e69de29 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a5/0051eaef37d1001c1725a54fc8b8a406 b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a5/0051eaef37d1001c1725a54fc8b8a406 new file mode 100644 index 0000000..be932b1 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a5/0051eaef37d1001c1725a54fc8b8a406 @@ -0,0 +1,22 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import gameobjects.RectObject; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + GameObject RectOb = new RectObject("RedObj", null, 350, 100, 0, 0, 700, 250, Color.RED); + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + addObject(RectOb); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0bafe526dcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0bafe526dcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..722a8d9 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/a7/d0bafe526dcc001c1604bd95dc1c47bd @@ -0,0 +1,32 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ab/50920cd63dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ab/50920cd63dcd001c1b99dc395638891e new file mode 100644 index 0000000..62fecf0 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ab/50920cd63dcd001c1b99dc395638891e @@ -0,0 +1,59 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + + } + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level6.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level6.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level6.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f010795872cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f010795872cc001c1b99dc395638891e new file mode 100644 index 0000000..f44196b --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f010795872cc001c1b99dc395638891e @@ -0,0 +1,46 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + protected static final int NR_ENEMIES = 21; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level7.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level7.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f0fee53634d1001c1725a54fc8b8a406 b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f0fee53634d1001c1725a54fc8b8a406 new file mode 100644 index 0000000..fd9a400 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ae/f0fee53634d1001c1725a54fc8b8a406 @@ -0,0 +1,19 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import rendering.RectArtist; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b/90497b5a72cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b/90497b5a72cc001c1b99dc395638891e new file mode 100644 index 0000000..0b8664d --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b/90497b5a72cc001c1b99dc395638891e @@ -0,0 +1,52 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level6.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level6.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return SpaceInvadersLevel.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b4/503644f73bcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b4/503644f73bcd001c1b99dc395638891e new file mode 100644 index 0000000..9551846 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b4/503644f73bcd001c1b99dc395638891e @@ -0,0 +1,51 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + protected static final int NR_ENEMIES = 21; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level7.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level7.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level7.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b5/704806d070d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b5/704806d070d0001c10e4aba650691eec new file mode 100644 index 0000000..e69de29 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b7/d07e94d41dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b7/d07e94d41dcd001c1b99dc395638891e new file mode 100644 index 0000000..2efa33d --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b7/d07e94d41dcd001c1b99dc395638891e @@ -0,0 +1,148 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + public void applyGameLogic() { + double gameTime = this.getGameTime(); + String gameStatus = (String) getLevelFlag("gameStatus"); + String subStatus = (String) getLevelFlag("detailedStatus"); + + if (gameStatus.equals("start") == true) { + setupInitialState(); + + } else if (gameStatus.equals("starting") == true) { + + if ((gameTime - starttime) > LEVEL_INIT_TIME) { + setLevelFlag("gameStatus", "init"); + } + + } else if (gameStatus.equals("init") == true) { + + this.createEnemies(); + this.createCollectables(); + + setLevelFlag("gameStatus", "playing"); + + } else if (gameStatus.equals("playing") == true) { + GameObject s = this.getObject("ego"); + + if (subStatus.equals("std")) { + + // check for collisions of enemy and shots, reuse shots list from before.. + LinkedList enemies = collectObjects("enemy", false); + + // check whether all enemies have been destroyed or escaped + if (enemies.size() == 0) { + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + this.doneLevel = true; + logger.info("no enemies left, level done."); + } + + // loop over enemies to check for collisions or suchlike ... + LinkedList shots = collectObjects("simpleShot", true); + for (GameObject e : enemies) { + // if ego collides with enemy.. + if (s.collisionDetection(e)) { + actionIfEgoCollidesWithEnemy(e, s); + } + + // if shot collides with enemy + for (GameObject shot : shots) { + if (e.collisionDetection(shot)) { + actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + } + } + + // collecting hearts + LinkedList collects = collectObjects("collect", false); + for (GameObject c : collects) { + if (s.collisionDetection(c)) { + actionIfEgoCollidesWithCollect(c, s); + } + } + + // loop over enemies and, with a certain probability, launch an enemy shot for each one + for (GameObject e : enemies) { + createEnemyShot(e); + } + + // check for collisions between ego object and enemy shots + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject eshot : eshots) { + + if (s.collisionDetection(eshot)) { + logger.trace("COLLISION" + eshot.scol.get(0) + "/" + s.scol.get(0)); + actionIfEgoObjectIsHit(eshot, s); + } + } + } // if substatus.. + else if (subStatus.equals("dying")) { + Double t0 = (Double) getLevelFlag("t0"); + if (gameTime - t0 > DYING_INTERVAL) { + LinkedList enemies = collectObjects("enemy", false); + setLevelFlag("detailedStatus", "std"); + s.setActive(true); + + for (GameObject e : enemies) { + e.setActive(true); + } + } + } + + } // if (gameStatus == "playing") + + + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0451fa36dcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0451fa36dcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..20fdea1 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/b9/c0451fa36dcc001c1604bd95dc1c47bd @@ -0,0 +1,35 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 1400; + protected static final double ENEMYSPEEDY = 1000; + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ba/508b71416bcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ba/508b71416bcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..e69de29 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/bb/407e9b446fcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/bb/407e9b446fcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..c1c06b8 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/bb/407e9b446fcc001c1604bd95dc1c47bd @@ -0,0 +1,41 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/be/d08449ad71cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/be/d08449ad71cc001c1b99dc395638891e new file mode 100644 index 0000000..d8e1963 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/be/d08449ad71cc001c1b99dc395638891e @@ -0,0 +1,47 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 1000; + protected static final double ENEMYSPEEDY = 2000; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c/500542d871d0001c10e4aba650691eec b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c/500542d871d0001c10e4aba650691eec new file mode 100644 index 0000000..5f19050 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c/500542d871d0001c10e4aba650691eec @@ -0,0 +1,24 @@ +package base; + +import java.io.IOException; + +import playground.Level5; +import playground.Level6; +import playground.Level7; + + +public class MultiLevelGame extends GameLoop { + + @Override + void defineLevels() { + this.resetLevels(); + this.addLevel(new Level5()); + this.addLevel(new Level6()); + this.addLevel(new Level7()); + } + + public static void main(String[] args) throws IOException { + MultiLevelGame mlg = new MultiLevelGame(); + mlg.runGame(args); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c9/301f4cbb3dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c9/301f4cbb3dcd001c1b99dc395638891e new file mode 100644 index 0000000..0f67bc8 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/c9/301f4cbb3dcd001c1b99dc395638891e @@ -0,0 +1,54 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + protected static Logger logger = LogManager.getLogger(Level6.class); + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level6.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level6.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level6.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80fff88b82d0001c1725a54fc8b8a406 b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80fff88b82d0001c1725a54fc8b8a406 new file mode 100644 index 0000000..d70356d --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/ca/80fff88b82d0001c1725a54fc8b8a406 @@ -0,0 +1,23 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import rendering.RectArtist; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + } + + public void addObject(String id, Playground pg, double x, double y, double vx, double vy, double width, double height, Color color) { + GameObject rectangle= new (rectangle, pg, 350, 100, 0, 0, 700, 250, Color.RED); + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f0946ca76fcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f0946ca76fcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..edb06b1 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d4/f0946ca76fcc001c1604bd95dc1c47bd @@ -0,0 +1,43 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d7/90cd074671cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d7/90cd074671cc001c1b99dc395638891e new file mode 100644 index 0000000..82500f7 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d7/90cd074671cc001c1b99dc395638891e @@ -0,0 +1,47 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d8/10bca2793dcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d8/10bca2793dcd001c1b99dc395638891e new file mode 100644 index 0000000..fcf9115 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/d8/10bca2793dcd001c1b99dc395638891e @@ -0,0 +1,58 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0cdc4b66fcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0cdc4b66fcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..40780bd --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/db/f0cdc4b66fcc001c1604bd95dc1c47bd @@ -0,0 +1,44 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e/506795b36ccc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e/506795b36ccc001c1604bd95dc1c47bd new file mode 100644 index 0000000..f498240 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e/506795b36ccc001c1604bd95dc1c47bd @@ -0,0 +1,29 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e6/80441def3bcd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e6/80441def3bcd001c1b99dc395638891e new file mode 100644 index 0000000..afb8a3c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e6/80441def3bcd001c1b99dc395638891e @@ -0,0 +1,52 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level6.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level6.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level6.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e7/f05a5c696bcc001c1604bd95dc1c47bd b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e7/f05a5c696bcc001c1604bd95dc1c47bd new file mode 100644 index 0000000..ad8a7fa --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/e7/f05a5c696bcc001c1604bd95dc1c47bd @@ -0,0 +1,5 @@ +package playground; + +public class Level6 { + +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f5/3040ab4b1ecd001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f5/3040ab4b1ecd001c1b99dc395638891e new file mode 100644 index 0000000..a0c6345 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f5/3040ab4b1ecd001c1b99dc395638891e @@ -0,0 +1,149 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + @Override + public void applyGameLogic() { + double gameTime = this.getGameTime(); + String gameStatus = (String) getLevelFlag("gameStatus"); + String subStatus = (String) getLevelFlag("detailedStatus"); + + if (gameStatus.equals("start") == true) { + setupInitialState(); + + } else if (gameStatus.equals("starting") == true) { + + if ((gameTime - starttime) > LEVEL_INIT_TIME) { + setLevelFlag("gameStatus", "init"); + } + + } else if (gameStatus.equals("init") == true) { + + this.createEnemies(); + this.createCollectables(); + + setLevelFlag("gameStatus", "playing"); + + } else if (gameStatus.equals("playing") == true) { + GameObject s = this.getObject("ego"); + + if (subStatus.equals("std")) { + + // check for collisions of enemy and shots, reuse shots list from before.. + LinkedList enemies = collectObjects("enemy", false); + + // check whether all enemies have been destroyed or escaped + if (enemies.size() == 0) { + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + this.doneLevel = true; + //logger.info("no enemies left, level done."); + } + + // loop over enemies to check for collisions or suchlike ... + LinkedList shots = collectObjects("simpleShot", true); + for (GameObject e : enemies) { + // if ego collides with enemy.. + if (s.collisionDetection(e)) { + actionIfEgoCollidesWithEnemy(e, s); + } + + // if shot collides with enemy + for (GameObject shot : shots) { + if (e.collisionDetection(shot)) { + actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + } + } + + // collecting hearts + LinkedList collects = collectObjects("collect", false); + for (GameObject c : collects) { + if (s.collisionDetection(c)) { + actionIfEgoCollidesWithCollect(c, s); + } + } + + // loop over enemies and, with a certain probability, launch an enemy shot for each one + for (GameObject e : enemies) { + createEnemyShot(e); + } + + // check for collisions between ego object and enemy shots + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject eshot : eshots) { + + if (s.collisionDetection(eshot)) { + //logger.trace("COLLISION" + eshot.scol.get(0) + "/" + s.scol.get(0)); + actionIfEgoObjectIsHit(eshot, s); + } + } + } // if substatus.. + else if (subStatus.equals("dying")) { + Double t0 = (Double) getLevelFlag("t0"); + if (gameTime - t0 > DYING_INTERVAL) { + LinkedList enemies = collectObjects("enemy", false); + setLevelFlag("detailedStatus", "std"); + s.setActive(true); + + for (GameObject e : enemies) { + //logger.trace("activating" + e.getId()); + e.setActive(true); + } + } + } + + } // if (gameStatus == "playing") + + + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f9/d0879f2672cc001c1b99dc395638891e b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f9/d0879f2672cc001c1b99dc395638891e new file mode 100644 index 0000000..db47f13 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.history/f9/d0879f2672cc001c1b99dc395638891e @@ -0,0 +1,45 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } +} diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location new file mode 100644 index 0000000..4949fc2 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/.org.eclipse.egit.core.cmp/.location differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/45/history.index b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/45/history.index new file mode 100644 index 0000000..748263a Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/45/history.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/d1/history.index b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/d1/history.index new file mode 100644 index 0000000..983984b Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/e4/d1/history.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/properties.index b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/properties.index new file mode 100644 index 0000000..0f1d99b Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.indexes/properties.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.markers b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.markers new file mode 100644 index 0000000..35085cb Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/.markers differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/org.eclipse.jdt.core/state.dat b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/org.eclipse.jdt.core/state.dat new file mode 100644 index 0000000..c6bedd4 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.projects/GameProject/org.eclipse.jdt.core/state.dat differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version new file mode 100644 index 0000000..25cb955 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/history.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index new file mode 100644 index 0000000..3dfd756 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version new file mode 100644 index 0000000..6b2aaa7 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/.indexes/properties.version @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/14.tree b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/14.tree new file mode 100644 index 0000000..01593a3 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.root/14.tree differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources new file mode 100644 index 0000000..ebeedf0 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.core.resources/.safetable/org.eclipse.core.resources differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..dffc6b5 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +version=1 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs new file mode 100644 index 0000000..9dd00d6 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.debug.ui.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +org.eclipse.debug.ui.PREF_LAUNCH_PERSPECTIVES=\r\n\r\n +preferredTargets=default\:default| diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.core.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.core.prefs new file mode 100644 index 0000000..851e037 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.egit.core.prefs @@ -0,0 +1,3 @@ +GitRepositoriesView.GitDirectories=C\:\\Users\\birgi\\Programmierung 2\\GitTeam53\\.git; +GitRepositoriesView.GitDirectories.relative=C\:\\Users\\birgi\\Programmierung 2\\GitTeam53\\.git; +eclipse.preferences.version=1 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..981338e --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.visibilityCheck=enabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.junit.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.junit.prefs new file mode 100644 index 0000000..31df02c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.junit.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.junit.content_assist_favorite_static_members_migrated=true diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000..b9a1847 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_VM_XML=\r\n\r\n \r\n \r\n \r\n\r\n diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..054551c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,12 @@ +breadcrumb.org.eclipse.jdt.ui.JavaPerspective=true +command=C\:\\Users\\birgi\\Java\\jdk 17.0.1\\bin\\javadoc.exe +content_assist_lru_history= +content_assist_number_of_computers=12 +content_assist_proposals_background=255,255,255 +content_assist_proposals_foreground=0,0,0 +eclipse.preferences.version=1 +org.eclipse.jdt.ui.formatterprofiles.version=22 +spelling_locale_initialized=true +typefilter_migrated_2=true +useAnnotationsPrefPage=true +useQuickDiffPrefPage=true diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs new file mode 100644 index 0000000..d56c53f --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jsch.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jsch.core.hasChangedDefaultWin32SshHome=true diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs new file mode 100644 index 0000000..67b1d96 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.m2e.discovery.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.m2e.discovery.pref.projects= diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs new file mode 100644 index 0000000..bc6bcc7 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.browser.prefs @@ -0,0 +1,2 @@ +browsers=\r\n\r\n\r\n\r\n\r\n +eclipse.preferences.version=1 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs new file mode 100644 index 0000000..29833de --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.ide.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +platformState=1649934036588 +quickStart=false +tipsAndTricks=true diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs new file mode 100644 index 0000000..08076f2 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +showIntro=false diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs new file mode 100644 index 0000000..b85d0db --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.workbench.prefs @@ -0,0 +1,9 @@ +//org.eclipse.ui.commands/state/org.eclipse.ui.navigator.resources.nested.changeProjectPresentation/org.eclipse.ui.commands.radioState=false +PLUGINS_NOT_ACTIVATED_ON_STARTUP=;org.eclipse.m2e.discovery; +eclipse.preferences.version=1 +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_END=255,255,255 +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_BG_START=255,255,255 +org.eclipse.ui.workbench.ACTIVE_NOFOCUS_TAB_TEXT_COLOR=16,16,16 +org.eclipse.ui.workbench.ACTIVE_TAB_BG_END=255,255,255 +org.eclipse.ui.workbench.ACTIVE_TAB_BG_START=255,255,255 +org.eclipse.ui.workbench.INACTIVE_TAB_BG_START=242,242,242 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/GameLoop.launch b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/GameLoop.launch new file mode 100644 index 0000000..0a26737 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/GameLoop.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/MultiLevelGame.launch b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/MultiLevelGame.launch new file mode 100644 index 0000000..a33bb57 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.core/.launches/MultiLevelGame.launch @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml new file mode 100644 index 0000000..a0f4656 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/dialog_settings.xml @@ -0,0 +1,8 @@ + +
+
+ + + +
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml new file mode 100644 index 0000000..d27febf --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi b/prog2-codebase/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi new file mode 100644 index 0000000..b8e9461 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xmi @@ -0,0 +1,2218 @@ + + + + activeSchemeId:org.eclipse.ui.defaultAcceleratorConfiguration + + + + + + + + topLevel + shellMaximized + + + + + persp.actionSet:org.eclipse.ui.cheatsheets.actionSet + persp.actionSet:org.eclipse.search.searchActionSet + persp.actionSet:org.eclipse.text.quicksearch.actionSet + persp.actionSet:org.eclipse.ui.edit.text.actionSet.annotationNavigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.navigation + persp.actionSet:org.eclipse.ui.edit.text.actionSet.convertLineDelimitersTo + persp.actionSet:org.eclipse.ui.externaltools.ExternalToolsSet + persp.actionSet:org.eclipse.ui.actionSet.keyBindings + persp.actionSet:org.eclipse.ui.actionSet.openFiles + persp.actionSet:org.eclipse.debug.ui.launchActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaActionSet + persp.actionSet:org.eclipse.jdt.ui.JavaElementCreationActionSet + persp.actionSet:org.eclipse.ui.NavigateActionSet + persp.viewSC:org.eclipse.jdt.ui.PackageExplorer + persp.viewSC:org.eclipse.jdt.ui.TypeHierarchy + persp.viewSC:org.eclipse.jdt.ui.SourceView + persp.viewSC:org.eclipse.jdt.ui.JavadocView + persp.viewSC:org.eclipse.search.ui.views.SearchView + persp.viewSC:org.eclipse.ui.console.ConsoleView + persp.viewSC:org.eclipse.ui.views.ContentOutline + persp.viewSC:org.eclipse.ui.views.ProblemView + persp.viewSC:org.eclipse.ui.views.ResourceNavigator + persp.viewSC:org.eclipse.ui.views.TaskList + persp.viewSC:org.eclipse.ui.views.ProgressView + persp.viewSC:org.eclipse.ui.navigator.ProjectExplorer + persp.viewSC:org.eclipse.ui.texteditor.TemplatesView + persp.viewSC:org.eclipse.pde.runtime.LogView + persp.newWizSC:org.eclipse.jdt.ui.wizards.JavaProjectWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewPackageCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewClassCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewInterfaceCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewEnumCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewRecordCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewAnnotationCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSourceFolderCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewSnippetFileCreationWizard + persp.newWizSC:org.eclipse.jdt.ui.wizards.NewJavaWorkingSetWizard + persp.newWizSC:org.eclipse.ui.wizards.new.folder + persp.newWizSC:org.eclipse.ui.wizards.new.file + persp.newWizSC:org.eclipse.ui.editors.wizards.UntitledTextFileWizard + persp.perspSC:org.eclipse.jdt.ui.JavaBrowsingPerspective + persp.perspSC:org.eclipse.debug.ui.DebugPerspective + persp.showIn:org.eclipse.jdt.ui.PackageExplorer + persp.showIn:org.eclipse.team.ui.GenericHistoryView + persp.showIn:org.eclipse.ui.navigator.ProjectExplorer + persp.actionSet:org.eclipse.debug.ui.breakpointActionSet + persp.actionSet:org.eclipse.jdt.debug.ui.JDTDebugActionSet + persp.showIn:org.eclipse.egit.ui.RepositoriesView + persp.actionSet:org.eclipse.eclemma.ui.CoverageActionSet + persp.showIn:org.eclipse.eclemma.ui.CoverageView + persp.viewSC:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.showIn:org.eclipse.tm.terminal.view.ui.TerminalsView + persp.newWizSC:org.eclipse.jdt.junit.wizards.NewTestCaseCreationWizard + persp.actionSet:org.eclipse.jdt.junit.JUnitActionSet + persp.viewSC:org.eclipse.ant.ui.views.AntView + + + + org.eclipse.e4.primaryNavigationStack + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + + + + org.eclipse.e4.secondaryNavigationStack + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Ant + + + + + org.eclipse.e4.secondaryDataStack + General + + View + categoryTag:General + + + View + categoryTag:Java + + + View + categoryTag:Java + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:General + + + View + categoryTag:Terminal + + + View + categoryTag:General + + + + + + + + + View + categoryTag:Help + + + View + categoryTag:General + + + View + categoryTag:Help + + + + + + + View + categoryTag:Help + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Help + + + + org.eclipse.e4.primaryDataStack + EditorStack + active + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + active + activeOnClose + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + Editor + removeOnHide + org.eclipse.jdt.ui.CompilationUnitEditor + + + + + + + + View + categoryTag:Java + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Git + + + + + View + categoryTag:Terminal + + + + + View + categoryTag:Java + + + + + View + categoryTag:Ant + + + + + + View + categoryTag:General + + ViewMenu + menuContribution:menu + + + + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + Draggable + + + toolbarSeparator + + + + Draggable + + + Draggable + + + Draggable + + + Draggable + + + toolbarSeparator + + + + Draggable + + + + toolbarSeparator + + + + toolbarSeparator + + + + Draggable + + + stretch + SHOW_RESTORE_MENU + + + Draggable + HIDEABLE + SHOW_RESTORE_MENU + + + + + stretch + + + Draggable + + + Draggable + + + + + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + TrimStack + Draggable + + + TrimStack + Draggable + + + TrimStack + Draggable + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + platform:win32 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Editor + removeOnHide + + + + + View + categoryTag:Ant + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Gradle + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Debug + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + + + + + View + categoryTag:Git + NoRestore + + + + + View + categoryTag:Git + + + + + View + categoryTag:Help + + + + + View + categoryTag:Debug + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java Browsing + + + + + View + categoryTag:Java + + + + + View + categoryTag:General + + + + + View + categoryTag:Java + + + + + View + categoryTag:Java + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Maven + + + + + View + categoryTag:Oomph + + + + + View + categoryTag:General + + + + + View + categoryTag:Version Control (Team) + + + + + View + categoryTag:Version Control (Team) + + + View + categoryTag:Help + + + + + View + categoryTag:Terminal + + + + + View + categoryTag:Other + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:Help + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + + View + categoryTag:General + + + + glue + move_after:PerspectiveSpacer + SHOW_RESTORE_MENU + + + move_after:Spacer Glue + HIDEABLE + SHOW_RESTORE_MENU + + + glue + move_after:SearchField + SHOW_RESTORE_MENU + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project b/prog2-codebase/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project new file mode 100644 index 0000000..3c10856 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.egit.core/.org.eclipse.egit.core.cmp/.project @@ -0,0 +1,11 @@ + + + .org.eclipse.egit.core.cmp + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1045345399.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1045345399.index new file mode 100644 index 0000000..51a37f6 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1045345399.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1323802929.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1323802929.index new file mode 100644 index 0000000..8719238 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1323802929.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/154772007.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/154772007.index new file mode 100644 index 0000000..29800e2 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/154772007.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1638656465.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1638656465.index new file mode 100644 index 0000000..728fc25 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1638656465.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index new file mode 100644 index 0000000..755c6b5 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1865797976.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1885772502.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1885772502.index new file mode 100644 index 0000000..571cc17 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1885772502.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1940943461.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1940943461.index new file mode 100644 index 0000000..4203a1e Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/1940943461.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2165708916.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2165708916.index new file mode 100644 index 0000000..9ed5cd5 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2165708916.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2175876234.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2175876234.index new file mode 100644 index 0000000..a4e796d Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2175876234.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2934959487.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2934959487.index new file mode 100644 index 0000000..4137190 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2934959487.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2941380907.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2941380907.index new file mode 100644 index 0000000..7fb32bd Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2941380907.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2942172793.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2942172793.index new file mode 100644 index 0000000..eb2621c Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2942172793.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2954194391.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2954194391.index new file mode 100644 index 0000000..1cff1d5 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/2954194391.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/314657506.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/314657506.index new file mode 100644 index 0000000..e8113ac Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/314657506.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3315482259.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3315482259.index new file mode 100644 index 0000000..db22793 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3315482259.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3389993303.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3389993303.index new file mode 100644 index 0000000..6c78e22 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3389993303.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3417787616.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3417787616.index new file mode 100644 index 0000000..36203db Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3417787616.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3667887152.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3667887152.index new file mode 100644 index 0000000..2b002fb Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3667887152.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3820782742.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3820782742.index new file mode 100644 index 0000000..2344ba6 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3820782742.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3851925960.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3851925960.index new file mode 100644 index 0000000..8d76587 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/3851925960.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/460876229.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/460876229.index new file mode 100644 index 0000000..47f95bd Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/460876229.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/471036660.index b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/471036660.index new file mode 100644 index 0000000..d05978e Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/471036660.index differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache new file mode 100644 index 0000000..593f470 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/assumedExternalFilesCache differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache new file mode 100644 index 0000000..80fa229 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalFilesCache differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps new file mode 100644 index 0000000..6b36e05 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/externalLibsTimeStamps differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt new file mode 100644 index 0000000..8586397 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/javaLikeNames.txt @@ -0,0 +1 @@ +java \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache new file mode 100644 index 0000000..848e50c Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/nonChainingJarsCache differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt new file mode 100644 index 0000000..6235e44 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt @@ -0,0 +1,23 @@ +INDEX VERSION 1.131+C:\Users\birgi\Programmierung 2\GitTeam53\prog2-codebase\.metadata\.plugins\org.eclipse.jdt.core +314657506.index +3315482259.index +2175876234.index +2942172793.index +1638656465.index +154772007.index +3851925960.index +2954194391.index +1940943461.index +2165708916.index +3389993303.index +2941380907.index +3667887152.index +460876229.index +1045345399.index +3417787616.index +2934959487.index +471036660.index +1323802929.index +3820782742.index +1885772502.index +1865797976.index diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat new file mode 100644 index 0000000..b511a82 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.core/variablesAndContainers.dat differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml new file mode 100644 index 0000000..8db86ab --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/.install.xml @@ -0,0 +1,4 @@ + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml new file mode 100644 index 0000000..47f95fd --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.launching/libraryInfos.xml @@ -0,0 +1,4 @@ + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml new file mode 100644 index 0000000..a4ee3cb --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/OpenTypeHistory.xml @@ -0,0 +1,2 @@ + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml new file mode 100644 index 0000000..29af3ac --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml new file mode 100644 index 0000000..81067af --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.jdt.ui/dialog_settings.xml @@ -0,0 +1,59 @@ + +
+ + +
+ + + + + +
+
+
+
+
+
+
+
+ +
+
+ + +
+
+ + + + + +
+
+ + + + + + + + + + + + + + + + + + +
+
+ + + +
+
+
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.history b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.history new file mode 100644 index 0000000..b92ebdb --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.history @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.index b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.index new file mode 100644 index 0000000..f48c920 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.core.refactoring/.refactorings/GameProject/2022/5/18/refactorings.index @@ -0,0 +1,3 @@ +1651752230798 Copy compilation unit +1651752250991 Delete element +1651752266549 Copy compilation unit diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml new file mode 100644 index 0000000..dcde5d4 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ltk.ui.refactoring/dialog_settings.xml @@ -0,0 +1,7 @@ + +
+
+ + +
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser new file mode 100644 index 0000000..abbf8e5 Binary files /dev/null and b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.core/workspaceState.ser differ diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log new file mode 100644 index 0000000..32590d7 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/0.log @@ -0,0 +1,14 @@ +2022-04-27 14:58:47,880 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-04-27 15:10:46,300 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-04-27 15:55:10,129 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-04-27 19:47:14,513 [Worker-6: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-04-29 10:10:24,280 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2022-05-04 15:36:33,453 [Worker-7: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2022-05-05 13:56:49,664 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-05-05 14:43:48,564 [Worker-0: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-05-06 15:17:22,218 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2022-05-06 15:28:02,027 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-05-06 15:41:38,046 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-05-07 09:35:29,236 [Worker-4: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. +2022-05-10 16:51:38,941 [Worker-5: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is out-of-date. Trying to update. +2022-05-10 18:51:10,274 [Worker-2: Loading available Gradle versions] INFO o.e.b.c.i.u.g.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read. diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.3.20211002-1029.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.3.20211002-1029.xml new file mode 100644 index 0000000..4512556 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.m2e.logback.configuration/logback.1.16.3.20211002-1029.xml @@ -0,0 +1,41 @@ + + + + %date [%thread] %-5level %logger{35} - %msg%n + + + OFF + + + + + ${org.eclipse.m2e.log.dir}/0.log + + ${org.eclipse.m2e.log.dir}/%i.log + 1 + 10 + + + 100MB + + + %date [%thread] %-5level %logger{35} - %msg%n + + + + + + WARN + + + + + + + + + + + + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup b/prog2-codebase/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup new file mode 100644 index 0000000..1f73e14 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.oomph.setup/workspace.setup @@ -0,0 +1,6 @@ + + diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml new file mode 100644 index 0000000..5ca0b77 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.tips.ide/dialog_settings.xml @@ -0,0 +1,3 @@ + +
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties b/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties new file mode 100644 index 0000000..63feab3 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/.executables/data.properties @@ -0,0 +1,10 @@ +#Wed Apr 27 15:19:20 CEST 2022 +1.Name=Ubuntu-20.04 (WSL) +0.Icon=C\:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico +0.Path=C\:\\Program Files\\Git\\bin\\sh.exe +0.Translate=true +1.Path=C\:\\WINDOWS\\System32\\wsl.exe +1.Translate=true +0.Args=--login -i +0.Name=Git Bash +1.Args=--distribution Ubuntu-20.04 diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml new file mode 100644 index 0000000..4a28024 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.tm.terminal.view.ui/dialog_settings.xml @@ -0,0 +1,9 @@ + +
+
+
+
+
+
+
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml new file mode 100644 index 0000000..e6119bd --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.ide/dialog_settings.xml @@ -0,0 +1,18 @@ + +
+
+ + + + + + + + + + + +
+
+
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml new file mode 100644 index 0000000..4868369 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/dialog_settings.xml @@ -0,0 +1,4 @@ + +
+ +
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/introstate b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/introstate new file mode 100644 index 0000000..02f134f --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.intro/introstate @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml new file mode 100644 index 0000000..2a8b2a4 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench.texteditor/dialog_settings.xml @@ -0,0 +1,30 @@ + +
+
+ + + + + + + + + + + + + + +
+
+ + + + + +
+
+ + +
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml new file mode 100644 index 0000000..072ef63 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/dialog_settings.xml @@ -0,0 +1,9 @@ + +
+
+ + + + +
+
diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml new file mode 100644 index 0000000..032f39c --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.ui.workbench/workingsets.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/prog2-codebase/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties b/prog2-codebase/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties new file mode 100644 index 0000000..0d848d5 --- /dev/null +++ b/prog2-codebase/.metadata/.plugins/org.eclipse.wst.sse.core/task-tags.properties @@ -0,0 +1,3 @@ +# +#Wed Apr 27 15:06:23 CEST 2022 +task-tag-projects-already-scanned=GameProject diff --git a/prog2-codebase/.metadata/version.ini b/prog2-codebase/.metadata/version.ini new file mode 100644 index 0000000..f97df4e --- /dev/null +++ b/prog2-codebase/.metadata/version.ini @@ -0,0 +1,3 @@ +#Tue May 10 18:50:44 CEST 2022 +org.eclipse.core.runtime=2 +org.eclipse.platform=4.23.0.v20220308-0310 diff --git a/prog2-codebase/GameProject/.classpath b/prog2-codebase/GameProject/.classpath new file mode 100644 index 0000000..a32988c --- /dev/null +++ b/prog2-codebase/GameProject/.classpath @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/prog2-codebase/GameProject/.project b/prog2-codebase/GameProject/.project new file mode 100644 index 0000000..46662e1 --- /dev/null +++ b/prog2-codebase/GameProject/.project @@ -0,0 +1,17 @@ + + + GameProject + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/prog2-codebase/GameProject/.settings/org.eclipse.jdt.core.prefs b/prog2-codebase/GameProject/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..e50443c --- /dev/null +++ b/prog2-codebase/GameProject/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,15 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/prog2-codebase/GameProject/audio/laser.wav b/prog2-codebase/GameProject/audio/laser.wav new file mode 100644 index 0000000..2d40ab3 Binary files /dev/null and b/prog2-codebase/GameProject/audio/laser.wav differ diff --git a/prog2-codebase/GameProject/audio/shot.wav b/prog2-codebase/GameProject/audio/shot.wav new file mode 100644 index 0000000..f26d8a1 Binary files /dev/null and b/prog2-codebase/GameProject/audio/shot.wav differ diff --git a/prog2-codebase/GameProject/audio/smash.wav b/prog2-codebase/GameProject/audio/smash.wav new file mode 100644 index 0000000..f367469 Binary files /dev/null and b/prog2-codebase/GameProject/audio/smash.wav differ diff --git a/prog2-codebase/GameProject/bin/base/GameLoop.class b/prog2-codebase/GameProject/bin/base/GameLoop.class new file mode 100644 index 0000000..622e7da Binary files /dev/null and b/prog2-codebase/GameProject/bin/base/GameLoop.class differ diff --git a/prog2-codebase/GameProject/bin/base/MultiLevelGame.class b/prog2-codebase/GameProject/bin/base/MultiLevelGame.class new file mode 100644 index 0000000..b0a7191 Binary files /dev/null and b/prog2-codebase/GameProject/bin/base/MultiLevelGame.class differ diff --git a/prog2-codebase/GameProject/bin/collider/CircleCollider.class b/prog2-codebase/GameProject/bin/collider/CircleCollider.class new file mode 100644 index 0000000..fbdbea5 Binary files /dev/null and b/prog2-codebase/GameProject/bin/collider/CircleCollider.class differ diff --git a/prog2-codebase/GameProject/bin/collider/Collider.class b/prog2-codebase/GameProject/bin/collider/Collider.class new file mode 100644 index 0000000..0e8cff5 Binary files /dev/null and b/prog2-codebase/GameProject/bin/collider/Collider.class differ diff --git a/prog2-codebase/GameProject/bin/collider/RectCollider.class b/prog2-codebase/GameProject/bin/collider/RectCollider.class new file mode 100644 index 0000000..723abea Binary files /dev/null and b/prog2-codebase/GameProject/bin/collider/RectCollider.class differ diff --git a/prog2-codebase/GameProject/bin/controller/CollisionAwareEgoController.class b/prog2-codebase/GameProject/bin/controller/CollisionAwareEgoController.class new file mode 100644 index 0000000..b172cc2 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/CollisionAwareEgoController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/EgoController.class b/prog2-codebase/GameProject/bin/controller/EgoController.class new file mode 100644 index 0000000..b6d0899 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/EgoController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/EnemyController.class b/prog2-codebase/GameProject/bin/controller/EnemyController.class new file mode 100644 index 0000000..3969aaf Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/EnemyController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/FallingStarController.class b/prog2-codebase/GameProject/bin/controller/FallingStarController.class new file mode 100644 index 0000000..0a00913 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/FallingStarController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/LimitedTimeController.class b/prog2-codebase/GameProject/bin/controller/LimitedTimeController.class new file mode 100644 index 0000000..d0ce258 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/LimitedTimeController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/MineController.class b/prog2-codebase/GameProject/bin/controller/MineController.class new file mode 100644 index 0000000..3ffaa91 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/MineController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/ObjectController.class b/prog2-codebase/GameProject/bin/controller/ObjectController.class new file mode 100644 index 0000000..dce7b55 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/ObjectController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/SimpleShotController.class b/prog2-codebase/GameProject/bin/controller/SimpleShotController.class new file mode 100644 index 0000000..98bca0d Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/SimpleShotController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/ZickZackController.class b/prog2-codebase/GameProject/bin/controller/ZickZackController.class new file mode 100644 index 0000000..1f2afd5 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/ZickZackController.class differ diff --git a/prog2-codebase/GameProject/bin/controller/package-info.class b/prog2-codebase/GameProject/bin/controller/package-info.class new file mode 100644 index 0000000..b216583 Binary files /dev/null and b/prog2-codebase/GameProject/bin/controller/package-info.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/AnimatedGameobject.class b/prog2-codebase/GameProject/bin/gameobjects/AnimatedGameobject.class new file mode 100644 index 0000000..673a6f4 Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/AnimatedGameobject.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/EgoObject.class b/prog2-codebase/GameProject/bin/gameobjects/EgoObject.class new file mode 100644 index 0000000..767656c Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/EgoObject.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/FallingStar.class b/prog2-codebase/GameProject/bin/gameobjects/FallingStar.class new file mode 100644 index 0000000..31bbd93 Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/FallingStar.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/GameObject.class b/prog2-codebase/GameProject/bin/gameobjects/GameObject.class new file mode 100644 index 0000000..539067b Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/GameObject.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/RectObject.class b/prog2-codebase/GameProject/bin/gameobjects/RectObject.class new file mode 100644 index 0000000..b1de96d Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/RectObject.class differ diff --git a/prog2-codebase/GameProject/bin/gameobjects/TextObject.class b/prog2-codebase/GameProject/bin/gameobjects/TextObject.class new file mode 100644 index 0000000..07a4c87 Binary files /dev/null and b/prog2-codebase/GameProject/bin/gameobjects/TextObject.class differ diff --git a/prog2-codebase/GameProject/bin/log4j2.xml b/prog2-codebase/GameProject/bin/log4j2.xml new file mode 100644 index 0000000..87ecf74 --- /dev/null +++ b/prog2-codebase/GameProject/bin/log4j2.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/prog2-codebase/GameProject/bin/playground/Animation.class b/prog2-codebase/GameProject/bin/playground/Animation.class new file mode 100644 index 0000000..40f8c11 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Animation.class differ diff --git a/prog2-codebase/GameProject/bin/playground/HighscoreManager.class b/prog2-codebase/GameProject/bin/playground/HighscoreManager.class new file mode 100644 index 0000000..b197dfd Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/HighscoreManager.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level1.class b/prog2-codebase/GameProject/bin/playground/Level1.class new file mode 100644 index 0000000..f91dbbd Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level1.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level2.class b/prog2-codebase/GameProject/bin/playground/Level2.class new file mode 100644 index 0000000..e94cc19 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level2.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level3.class b/prog2-codebase/GameProject/bin/playground/Level3.class new file mode 100644 index 0000000..b5b8d67 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level3.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level4.class b/prog2-codebase/GameProject/bin/playground/Level4.class new file mode 100644 index 0000000..ffdd295 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level4.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level5.class b/prog2-codebase/GameProject/bin/playground/Level5.class new file mode 100644 index 0000000..98f4c37 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level5.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level6.class b/prog2-codebase/GameProject/bin/playground/Level6.class new file mode 100644 index 0000000..8ad7413 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level6.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Level7.class b/prog2-codebase/GameProject/bin/playground/Level7.class new file mode 100644 index 0000000..3605297 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Level7.class differ diff --git a/prog2-codebase/GameProject/bin/playground/LevelBoss.class b/prog2-codebase/GameProject/bin/playground/LevelBoss.class new file mode 100644 index 0000000..ac769e0 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/LevelBoss.class differ diff --git a/prog2-codebase/GameProject/bin/playground/LevelHitTwice.class b/prog2-codebase/GameProject/bin/playground/LevelHitTwice.class new file mode 100644 index 0000000..e2c4da9 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/LevelHitTwice.class differ diff --git a/prog2-codebase/GameProject/bin/playground/LevelWithBox.class b/prog2-codebase/GameProject/bin/playground/LevelWithBox.class new file mode 100644 index 0000000..4d9c8a7 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/LevelWithBox.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Music$1.class b/prog2-codebase/GameProject/bin/playground/Music$1.class new file mode 100644 index 0000000..55c56c5 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Music$1.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Music.class b/prog2-codebase/GameProject/bin/playground/Music.class new file mode 100644 index 0000000..0fe9a07 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Music.class differ diff --git a/prog2-codebase/GameProject/bin/playground/Playground.class b/prog2-codebase/GameProject/bin/playground/Playground.class new file mode 100644 index 0000000..2ba95eb Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/Playground.class differ diff --git a/prog2-codebase/GameProject/bin/playground/SaveGame.class b/prog2-codebase/GameProject/bin/playground/SaveGame.class new file mode 100644 index 0000000..ba44192 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/SaveGame.class differ diff --git a/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevel.class b/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevel.class new file mode 100644 index 0000000..0a85aa3 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevel.class differ diff --git a/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevelTest.class b/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevelTest.class new file mode 100644 index 0000000..d406089 Binary files /dev/null and b/prog2-codebase/GameProject/bin/playground/SpaceInvadersLevelTest.class differ diff --git a/prog2-codebase/GameProject/bin/rendering/AnimationArtist.class b/prog2-codebase/GameProject/bin/rendering/AnimationArtist.class new file mode 100644 index 0000000..8a9383d Binary files /dev/null and b/prog2-codebase/GameProject/bin/rendering/AnimationArtist.class differ diff --git a/prog2-codebase/GameProject/bin/rendering/Artist.class b/prog2-codebase/GameProject/bin/rendering/Artist.class new file mode 100644 index 0000000..f705209 Binary files /dev/null and b/prog2-codebase/GameProject/bin/rendering/Artist.class differ diff --git a/prog2-codebase/GameProject/bin/rendering/CircleArtist.class b/prog2-codebase/GameProject/bin/rendering/CircleArtist.class new file mode 100644 index 0000000..0542963 Binary files /dev/null and b/prog2-codebase/GameProject/bin/rendering/CircleArtist.class differ diff --git a/prog2-codebase/GameProject/bin/rendering/RectArtist.class b/prog2-codebase/GameProject/bin/rendering/RectArtist.class new file mode 100644 index 0000000..6b2153e Binary files /dev/null and b/prog2-codebase/GameProject/bin/rendering/RectArtist.class differ diff --git a/prog2-codebase/GameProject/bin/rendering/TextArtist.class b/prog2-codebase/GameProject/bin/rendering/TextArtist.class new file mode 100644 index 0000000..b96e7fa Binary files /dev/null and b/prog2-codebase/GameProject/bin/rendering/TextArtist.class differ diff --git a/prog2-codebase/GameProject/bin/ui/AboutFrame$1.class b/prog2-codebase/GameProject/bin/ui/AboutFrame$1.class new file mode 100644 index 0000000..044a2a4 Binary files /dev/null and b/prog2-codebase/GameProject/bin/ui/AboutFrame$1.class differ diff --git a/prog2-codebase/GameProject/bin/ui/AboutFrame.class b/prog2-codebase/GameProject/bin/ui/AboutFrame.class new file mode 100644 index 0000000..1637879 Binary files /dev/null and b/prog2-codebase/GameProject/bin/ui/AboutFrame.class differ diff --git a/prog2-codebase/GameProject/bin/ui/GamePanel.class b/prog2-codebase/GameProject/bin/ui/GamePanel.class new file mode 100644 index 0000000..0a86284 Binary files /dev/null and b/prog2-codebase/GameProject/bin/ui/GamePanel.class differ diff --git a/prog2-codebase/GameProject/bin/ui/GameUI.class b/prog2-codebase/GameProject/bin/ui/GameUI.class new file mode 100644 index 0000000..b602fa3 Binary files /dev/null and b/prog2-codebase/GameProject/bin/ui/GameUI.class differ diff --git a/prog2-codebase/GameProject/doc/allclasses-index.html b/prog2-codebase/GameProject/doc/allclasses-index.html new file mode 100644 index 0000000..f088147 --- /dev/null +++ b/prog2-codebase/GameProject/doc/allclasses-index.html @@ -0,0 +1,208 @@ + + + + +All Classes and Interfaces + + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes and Interfaces

+
+
+
Classes
+
+
Class
+
Description
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
+
Collider for round objects
+
+ +
+
abstract base class for all Colliders to detect collisions between GameObjects
+
+ +
+
An EgoController which cannot move through obstacle objects (is collission aware).
+
+ +
+
Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
+
+ +
 
+ +
+
This class controls the space invaders.
+
+ +
 
+ +
+
Controls background stars.
+
+ +
+
Main class starting any game, contains main().
+
+ +
+
The class GameObject represents a (possibly animated) object appearing in a level of the + game.
+
+ +
+
creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
+
+ +
 
+ +
+
extends SpaceInvadersLevel with a boring start message
+
+ +
+
extends extends SpaceInvadersLevel with a different startup message.
+
+ +
+
extends SpaceInvadersLevel with a ZigZack move of the enemies in + Level3.createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different Level3.getStartupMessage().
+
+ +
+
extends extends SpaceInvadersLevel + + Hit aliens twice to kill them + they say AUA when not destroyed +
+
+ +
 
+ +
 
+ +
 
+ +
+
Class that realizes all the game logic of a very simple game level.
+
+ +
+
extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
+
+ +
 
+ +
+
Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
+
+ +
 
+ +
 
+ +
 
+ +
+
Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
+
+ +
+
Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
+
+ +
 
+ +
+
a Collider for Rectangles, usually used for RectObject instances.
+
+ +
+
A rectangle object.
+
+ +
 
+ +
 
+ +
+
Class that realizes all the game logic of a very simple game level.
+
+ +
+
Rendering an object as a text of a specified color, size and font.
+
+ +
+
Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text.
+
+ +
 
+
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/allpackages-index.html b/prog2-codebase/GameProject/doc/allpackages-index.html new file mode 100644 index 0000000..3f5cbd0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/allpackages-index.html @@ -0,0 +1,80 @@ + + + + +All Packages + + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
 
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/GameLoop.html b/prog2-codebase/GameProject/doc/base/GameLoop.html new file mode 100644 index 0000000..adbd011 --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/GameLoop.html @@ -0,0 +1,254 @@ + + + + +GameLoop + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package base
+

Class GameLoop

+
+
java.lang.Object +
base.GameLoop
+
+
+
+
Direct Known Subclasses:
+
MultiLevelGame
+
+
+
public class GameLoop +extends Object
+
Main class starting any game, contains main(). Apart from that, this class manages all + non-logical functionalities which should be hidden from a game designer like: +
    +
  • Setting up windows, panels, buttons, action callbacks, ... +
  • Reading keyboard inputs +
  • Redrawing game window if necessary +
  • managing the game time and calling the appropriate GameObject or Playground + methods periodically, at every time step of the game. +
+ There will normally never be a need to modify this file, a designer/game programmer should always + redefine the GameObject and Playground classes and implement new functionality + there. To make a long story short
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    +
    static int
    + +
    +
    Pixel width of Game GUI ( above 0)
    +
    +
    static int
    + +
    +
    Pixel height of Game GUI (above 0)
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
    +
    constructor which calls defineLevels(), which adds all levels of this game.
    +
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static void
    +
    main(String[] args)
    +
    +
    main to start the whole application.
    +
    +
    void
    +
    runGame(String[] args)
    +
    +
    loops over all levels and implements the game loop to update continuously the level + during play time
    +
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      SIZEX

      +
      public static int SIZEX
      +
      Pixel width of Game GUI ( above 0)
      +
      +
    • +
    • +
      +

      SIZEY

      +
      public static int SIZEY
      +
      Pixel height of Game GUI (above 0)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GameLoop

      +
      public GameLoop()
      +
      constructor which calls defineLevels(), which adds all levels of this game.
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      runGame

      +
      public void runGame(String[] args) + throws IOException
      +
      loops over all levels and implements the game loop to update continuously the level + during play time
      +
      +
      Parameters:
      +
      args - command line arguments forwarded (currently ignored)
      +
      Throws:
      +
      IOException - if hitghscore.txt cannot be written.
      +
      +
      +
    • +
    • +
      +

      main

      +
      public static void main(String[] args) + throws IOException
      +
      main to start the whole application. + initializes the levels ArrayList of Playground instances (levels) to be played with one level SpaceInvadersLevel in constructor of GameLoop().
      +
      +
      Parameters:
      +
      args - Java default command line args, forwarded to runGame(String[])
      +
      Throws:
      +
      IOException - in case highscore.txt cannot be written.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/MultiLevelGame.html b/prog2-codebase/GameProject/doc/base/MultiLevelGame.html new file mode 100644 index 0000000..998a3a3 --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/MultiLevelGame.html @@ -0,0 +1,178 @@ + + + + +MultiLevelGame + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package base
+

Class MultiLevelGame

+
+
java.lang.Object +
base.GameLoop +
base.MultiLevelGame
+
+
+
+
+
public class MultiLevelGame +extends GameLoop
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MultiLevelGame

      +
      public MultiLevelGame()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/class-use/GameLoop.html b/prog2-codebase/GameProject/doc/base/class-use/GameLoop.html new file mode 100644 index 0000000..ab02254 --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/class-use/GameLoop.html @@ -0,0 +1,83 @@ + + + + +Uses of Class base.GameLoop + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
base.GameLoop

+
+
Packages that use GameLoop
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/class-use/MultiLevelGame.html b/prog2-codebase/GameProject/doc/base/class-use/MultiLevelGame.html new file mode 100644 index 0000000..f37abfb --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/class-use/MultiLevelGame.html @@ -0,0 +1,58 @@ + + + + +Uses of Class base.MultiLevelGame + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
base.MultiLevelGame

+
+No usage of base.MultiLevelGame
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/package-summary.html b/prog2-codebase/GameProject/doc/base/package-summary.html new file mode 100644 index 0000000..5e5403c --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/package-summary.html @@ -0,0 +1,87 @@ + + + + +base + + + + + + + + + + + + + + + +
+ +
+
+
+

Package base

+
+
+
package base
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
    +
    Main class starting any game, contains main().
    +
    + +
     
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/package-tree.html b/prog2-codebase/GameProject/doc/base/package-tree.html new file mode 100644 index 0000000..54141c1 --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/package-tree.html @@ -0,0 +1,76 @@ + + + + +base Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package base

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/base/package-use.html b/prog2-codebase/GameProject/doc/base/package-use.html new file mode 100644 index 0000000..d5218d1 --- /dev/null +++ b/prog2-codebase/GameProject/doc/base/package-use.html @@ -0,0 +1,82 @@ + + + + +Uses of Package base + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
base

+
+
Packages that use base
+
+
Package
+
Description
+ +
 
+
+
+
    +
  • +
    +
    Classes in base used by base
    +
    +
    Class
    +
    Description
    + +
    +
    Main class starting any game, contains main().
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/CircleCollider.html b/prog2-codebase/GameProject/doc/collider/CircleCollider.html new file mode 100644 index 0000000..6d84f5a --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/CircleCollider.html @@ -0,0 +1,237 @@ + + + + +CircleCollider + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package collider
+

Class CircleCollider

+
+
java.lang.Object +
collider.Collider +
collider.CircleCollider
+
+
+
+
+
public class CircleCollider +extends Collider
+
Collider for round objects
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CircleCollider

      +
      public CircleCollider(String id, + GameObject o, + double radius)
      +
      Constructor which sets the radius to be respected for collisions.
      +
      +
      Parameters:
      +
      id - String unique name for the collider instance
      +
      o - GameObject it belongs to
      +
      radius - radius in pixels to use as a size
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public String toString()
      +
      simple concatenation of all attributes (x,y,r)
      +
      +
      Overrides:
      +
      toString in class Collider
      +
      +
      +
    • +
    • +
      +

      checkCollisionCircCirc

      +
      public boolean checkCollisionCircCirc(Collider _c2) + throws Exception
      +
      calculates the collission of this with other collider
      +
      +
      Parameters:
      +
      _c2 - the other collider
      +
      Returns:
      +
      true if a collision was detected
      +
      Throws:
      +
      Exception - in case the math operations are invalid (due to illegal values of x y or + radius)
      +
      +
      +
    • +
    • +
      +

      collidesWith

      +
      public boolean collidesWith(Collider other)
      +
      Description copied from class: Collider
      +
      checks the collission with another collider instance.
      +
      +
      Specified by:
      +
      collidesWith in class Collider
      +
      Parameters:
      +
      other - the instance to compare to
      +
      Returns:
      +
      true if the colliders collide (touch or overlap)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/Collider.html b/prog2-codebase/GameProject/doc/collider/Collider.html new file mode 100644 index 0000000..03fc178 --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/Collider.html @@ -0,0 +1,346 @@ + + + + +Collider + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package collider
+

Class Collider

+
+
java.lang.Object +
collider.Collider
+
+
+
+
Direct Known Subclasses:
+
CircleCollider, RectCollider
+
+
+
public abstract class Collider +extends Object
+
abstract base class for all Colliders to detect collisions between GameObjects
+
+
+
    + +
  • +
    +

    Field Summary

    +
    Fields
    +
    +
    Modifier and Type
    +
    Field
    +
    Description
    + + +
    +
    unique internal name for Collider
    +
    +
    +
    +
  • + +
  • +
    +

    Constructor Summary

    +
    Constructors
    +
    +
    Constructor
    +
    Description
    + +
     
    +
    +
    +
  • + +
  • +
    +

    Method Summary

    +
    +
    +
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    abstract boolean
    + +
    +
    checks the collission with another collider instance.
    +
    + + +
    +
    returns the internal unique name
    +
    +
    double
    + +
    +
    returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
    +
    +
    double
    + +
    +
    returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
    +
    +
    void
    + +
    +
    setter for GameController
    +
    +
    void
    +
    setObject(GameObject gameObject)
    +
    +
    setter for corresponding GameObject
    +
    + +
    setOffsets(double dx, + double dy)
    +
    +
    setter for offset values to be used relative to GameObject center. default is zero.
    +
    +
    void
    + +
    +
    setter for Playground instance this collider belongs to
    +
    + + +
     
    +
    +
    +
    +
    +

    Methods inherited from class java.lang.Object

    +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    +
    +
  • +
+
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      id

      +
      public String id
      +
      unique internal name for Collider
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Collider

      +
      public Collider(String id, + GameObject o)
      +
      +
      Parameters:
      +
      id - unique name for Collider (internally)
      +
      o - GameObject instance it belongs to
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setOffsets

      +
      public Collider setOffsets(double dx, + double dy)
      +
      setter for offset values to be used relative to GameObject center. default is zero.
      +
      +
      Parameters:
      +
      dx - offset in X direction (default 0)
      +
      dy - offset in Y direction (default 0)
      +
      Returns:
      +
      this instance of Collider
      +
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    • +
      +

      getX

      +
      public double getX()
      +
      returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
      +
      +
      Returns:
      +
      X value
      +
      +
      +
    • +
    • +
      +

      getY

      +
      public double getY()
      +
      returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
      +
      +
      Returns:
      +
      Y value
      +
      +
      +
    • +
    • +
      +

      getId

      +
      public String getId()
      +
      returns the internal unique name
      +
      +
      Returns:
      +
      the String with the name
      +
      +
      +
    • +
    • +
      +

      setObject

      +
      public void setObject(GameObject gameObject)
      +
      setter for corresponding GameObject
      +
      +
      Parameters:
      +
      gameObject - to be saved in attribute
      +
      +
      +
    • +
    • +
      +

      setController

      +
      public void setController(ObjectController controller)
      +
      setter for GameController
      +
      +
      Parameters:
      +
      controller - to be saved in attribute
      +
      +
      +
    • +
    • +
      +

      setPlayground

      +
      public void setPlayground(Playground playground)
      +
      setter for Playground instance this collider belongs to
      +
      +
      Parameters:
      +
      playground - instance to be stored in attribute
      +
      +
      +
    • +
    • +
      +

      collidesWith

      +
      public abstract boolean collidesWith(Collider other)
      +
      checks the collission with another collider instance.
      +
      +
      Parameters:
      +
      other - the instance to compare to
      +
      Returns:
      +
      true if the colliders collide (touch or overlap)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/RectCollider.html b/prog2-codebase/GameProject/doc/collider/RectCollider.html new file mode 100644 index 0000000..10b607b --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/RectCollider.html @@ -0,0 +1,260 @@ + + + + +RectCollider + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package collider
+

Class RectCollider

+
+
java.lang.Object +
collider.Collider +
collider.RectCollider
+
+
+
+
+
public class RectCollider +extends Collider
+
a Collider for Rectangles, usually used for RectObject instances.
+
+
See Also:
+
+ +
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RectCollider

      +
      public RectCollider(String id, + GameObject o, + double w, + double h)
      +
      initializes this RectCollider. + calls superclass constructor of Collider(String, GameObject) with params String id and GameObject o.
      +
      +
      Parameters:
      +
      id - String unique name for this RectCollider
      +
      o - GameObject instance this RectCollider belongs to (cannot be null)
      +
      w - width in pixels for the collider dimensions (> 0)
      +
      h - height in pixels for the collider dimensions (>0)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Collider
      +
      +
      +
    • +
    • +
      +

      checkCollisionRectRect

      +
      public boolean checkCollisionRectRect(Collider other)
      +
      checks collision with other Collider, which needs to be a RectCollider, too.
      +
      +
      Parameters:
      +
      other - RectCollider (is casted) to calculate collision with
      +
      Returns:
      +
      true if collission is detected
      +
      +
      +
    • +
    • +
      +

      checkCollisionRectCirc

      +
      public boolean checkCollisionRectCirc(Collider other)
      +
      checks collision with other Collider, which needs to be a CircleCollider
      +
      +
      Parameters:
      +
      other - CircleCollider (is casted) to calculate collision with
      +
      Returns:
      +
      true if collission is detected
      +
      +
      +
    • +
    • +
      +

      collidesWith

      +
      public boolean collidesWith(Collider other)
      +
      Description copied from class: Collider
      +
      checks the collission with another collider instance.
      +
      +
      Specified by:
      +
      collidesWith in class Collider
      +
      Parameters:
      +
      other - the instance to compare to
      +
      Returns:
      +
      true if the colliders collide (touch or overlap)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/class-use/CircleCollider.html b/prog2-codebase/GameProject/doc/collider/class-use/CircleCollider.html new file mode 100644 index 0000000..27cc79f --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/class-use/CircleCollider.html @@ -0,0 +1,58 @@ + + + + +Uses of Class collider.CircleCollider + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
collider.CircleCollider

+
+No usage of collider.CircleCollider
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/class-use/Collider.html b/prog2-codebase/GameProject/doc/collider/class-use/Collider.html new file mode 100644 index 0000000..bc221db --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/class-use/Collider.html @@ -0,0 +1,172 @@ + + + + +Uses of Class collider.Collider + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
collider.Collider

+
+
Packages that use Collider
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/class-use/RectCollider.html b/prog2-codebase/GameProject/doc/collider/class-use/RectCollider.html new file mode 100644 index 0000000..3c1caf2 --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/class-use/RectCollider.html @@ -0,0 +1,58 @@ + + + + +Uses of Class collider.RectCollider + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
collider.RectCollider

+
+No usage of collider.RectCollider
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/package-summary.html b/prog2-codebase/GameProject/doc/collider/package-summary.html new file mode 100644 index 0000000..1e47136 --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/package-summary.html @@ -0,0 +1,93 @@ + + + + +collider + + + + + + + + + + + + + + + +
+ +
+
+
+

Package collider

+
+
+
package collider
+
+
    +
  • +
    +
    Classes
    +
    +
    Class
    +
    Description
    + +
    +
    Collider for round objects
    +
    + +
    +
    abstract base class for all Colliders to detect collisions between GameObjects
    +
    + +
    +
    a Collider for Rectangles, usually used for RectObject instances.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/package-tree.html b/prog2-codebase/GameProject/doc/collider/package-tree.html new file mode 100644 index 0000000..edd6206 --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/package-tree.html @@ -0,0 +1,77 @@ + + + + +collider Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package collider

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/collider/package-use.html b/prog2-codebase/GameProject/doc/collider/package-use.html new file mode 100644 index 0000000..edad07c --- /dev/null +++ b/prog2-codebase/GameProject/doc/collider/package-use.html @@ -0,0 +1,97 @@ + + + + +Uses of Package collider + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
collider

+
+
Packages that use collider
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+
    +
  • +
    +
    Classes in collider used by collider
    +
    +
    Class
    +
    Description
    + +
    +
    abstract base class for all Colliders to detect collisions between GameObjects
    +
    +
    +
    +
  • +
  • +
    +
    Classes in collider used by gameobjects
    +
    +
    Class
    +
    Description
    + +
    +
    abstract base class for all Colliders to detect collisions between GameObjects
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/constant-values.html b/prog2-codebase/GameProject/doc/constant-values.html new file mode 100644 index 0000000..6d08bf1 --- /dev/null +++ b/prog2-codebase/GameProject/doc/constant-values.html @@ -0,0 +1,183 @@ + + + + +Constant Field Values + + + + + + + + + + + + + + + +
+ +
+
+
+

Constant Field Values

+
+

Contents

+ +
+
+
+

gameobjects.*

+
    +
  • +
    gameobjects.GameObject
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final int
    + +
    2
    +
    public static final int
    + +
    0
    +
    public static final int
    + +
    1
    +
    +
  • +
+
+
+

playground.*

+
    +
  • +
    playground.Level4
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final int
    + +
    2
    +
    +
  • +
  • +
    playground.LevelHitTwice
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final int
    + +
    2
    +
    +
  • +
  • +
    playground.Playground
    +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final int
    + +
    3
    +
    public static final int
    + +
    1
    +
    public static final int
    + +
    2
    +
    +
  • +
  • + +
    +
    Modifier and Type
    +
    Constant Field
    +
    Value
    +
    public static final double
    + +
    220.0
    +
    public static final double
    + +
    175.0
    +
    +
  • +
+
+
+

ui.*

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/CollisionAwareEgoController.html b/prog2-codebase/GameProject/doc/controller/CollisionAwareEgoController.html new file mode 100644 index 0000000..0299b0f --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/CollisionAwareEgoController.html @@ -0,0 +1,240 @@ + + + + +CollisionAwareEgoController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class CollisionAwareEgoController

+
+
java.lang.Object +
controller.ObjectController +
controller.EgoController +
controller.CollisionAwareEgoController
+
+
+
+
+
+
public class CollisionAwareEgoController +extends EgoController
+
An EgoController which cannot move through obstacle objects (is collission aware). Only respects + GameObjects that have the String 'obstacle' in their name.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CollisionAwareEgoController

      +
      public CollisionAwareEgoController(double egoRad)
      +
      +
      Parameters:
      +
      egoRad - radius of ego object to be used.
      +
      +
      +
    • +
    • +
      +

      CollisionAwareEgoController

      +
      public CollisionAwareEgoController(double egoRad, + File soundOnShot)
      +
      +
      Parameters:
      +
      egoRad - radius of ego object to be used.
      +
      soundOnShot - WAV file to be played on shot
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      saveDynamicState

      +
      public void saveDynamicState()
      +
      +
    • +
    • +
      +

      restoreDynamicState

      +
      public void restoreDynamicState()
      +
      +
    • +
    • +
      +

      stopObject

      +
      public boolean stopObject()
      +
      Description copied from class: EgoController
      +
      checks the position and respects level boundaries and own radius or width/height set on constructor.
      +
      +
      Overrides:
      +
      stopObject in class EgoController
      +
      Returns:
      +
      true if the object reached the boundaries of the level, false otherwise
      +
      +
      +
    • +
    • +
      +

      onSpace

      +
      public void onSpace(KeyEvent e, + GameObject ego)
      +
      Description copied from class: EgoController
      +
      behavior for shooting on key space
      +
      +
      Overrides:
      +
      onSpace in class EgoController
      +
      Parameters:
      +
      e - KeyEvent of the space key
      +
      ego - EgoObject instance (used to determine position of shot object's start)
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/EgoController.html b/prog2-codebase/GameProject/doc/controller/EgoController.html new file mode 100644 index 0000000..685db06 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/EgoController.html @@ -0,0 +1,292 @@ + + + + +EgoController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class EgoController

+
+
java.lang.Object +
controller.ObjectController +
controller.EgoController
+
+
+
+
+
Direct Known Subclasses:
+
CollisionAwareEgoController
+
+
+
public class EgoController +extends ObjectController
+
Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      EgoController

      +
      public EgoController(double egoRad)
      +
      constructor that gives the ego controller a radius to stop the ego object when it reaches the level boundaries.
      +
      +
      Parameters:
      +
      egoRad - radius to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
      +
      +
      +
    • +
    • +
      +

      EgoController

      +
      public EgoController(double width, + double height)
      +
      constructor that gives the ego controller a width and height to stop the ego object when it reaches the level boundaries.
      +
      +
      Parameters:
      +
      width - width to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
      +
      height - height to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      onUp

      +
      public void onUp(KeyEvent kc, + GameObject ego)
      +
      +
    • +
    • +
      +

      onDown

      +
      public void onDown(KeyEvent kc, + GameObject ego)
      +
      +
    • +
    • +
      +

      onLeft

      +
      public void onLeft(KeyEvent kc, + GameObject ego)
      +
      +
    • +
    • +
      +

      onRight

      +
      public void onRight(KeyEvent kc, + GameObject ego)
      +
      +
    • +
    • +
      +

      onStop

      +
      public void onStop(KeyEvent kc, + GameObject ego)
      +
      +
    • +
    • +
      +

      stopObject

      +
      public boolean stopObject()
      +
      checks the position and respects level boundaries and own radius or width/height set on constructor.
      +
      +
      Returns:
      +
      true if the object reached the boundaries of the level, false otherwise
      +
      +
      +
    • +
    • +
      +

      onSpace

      +
      public void onSpace(KeyEvent e, + GameObject ego)
      +
      behavior for shooting on key space
      +
      +
      Parameters:
      +
      e - KeyEvent of the space key
      +
      ego - EgoObject instance (used to determine position of shot object's start)
      +
      +
      +
    • +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      updates position based on key events (mouse currently ignored)
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/EnemyController.html b/prog2-codebase/GameProject/doc/controller/EnemyController.html new file mode 100644 index 0000000..5a9309b --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/EnemyController.html @@ -0,0 +1,184 @@ + + + + +EnemyController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class EnemyController

+
+
java.lang.Object +
controller.ObjectController +
controller.EnemyController
+
+
+
+
+
Direct Known Subclasses:
+
ZickZackController
+
+
+
public class EnemyController +extends ObjectController
+
This class controls the space invaders.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      EnemyController

      +
      public EnemyController()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/FallingStarController.html b/prog2-codebase/GameProject/doc/controller/FallingStarController.html new file mode 100644 index 0000000..beca9ab --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/FallingStarController.html @@ -0,0 +1,180 @@ + + + + +FallingStarController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class FallingStarController

+
+
java.lang.Object +
controller.ObjectController +
controller.FallingStarController
+
+
+
+
+
public class FallingStarController +extends ObjectController
+
Controls background stars. When they touch the bottom of the display they reappear on top.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      FallingStarController

      +
      public FallingStarController()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/LimitedTimeController.html b/prog2-codebase/GameProject/doc/controller/LimitedTimeController.html new file mode 100644 index 0000000..0371020 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/LimitedTimeController.html @@ -0,0 +1,191 @@ + + + + +LimitedTimeController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class LimitedTimeController

+
+
java.lang.Object +
controller.ObjectController +
controller.LimitedTimeController
+
+
+
+
+
public class LimitedTimeController +extends ObjectController
+
Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      LimitedTimeController

      +
      public LimitedTimeController(double g0, + double duration)
      +
      Constructor.
      +
      +
      Parameters:
      +
      g0 - int initial game time at creation
      +
      duration - int duration in seconds
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/MineController.html b/prog2-codebase/GameProject/doc/controller/MineController.html new file mode 100644 index 0000000..e98af5a --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/MineController.html @@ -0,0 +1,179 @@ + + + + +MineController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class MineController

+
+
java.lang.Object +
controller.ObjectController +
controller.MineController
+
+
+
+
+
public class MineController +extends ObjectController
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      MineController

      +
      public MineController(double lineSpeed)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/ObjectController.html b/prog2-codebase/GameProject/doc/controller/ObjectController.html new file mode 100644 index 0000000..ad1e312 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/ObjectController.html @@ -0,0 +1,316 @@ + + + + +ObjectController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class ObjectController

+
+
java.lang.Object +
controller.ObjectController
+
+
+
+
Direct Known Subclasses:
+
EgoController, EnemyController, FallingStarController, LimitedTimeController, MineController, SimpleShotController
+
+
+
public abstract class ObjectController +extends Object
+
Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn. The most important method here is updateObject(): this method is, by various + indirections, called exactly once per game time step for every object that is on the playground. + It has, by virtue of the member variables gameObject full access to +
    +
  • the object it is controlling +
  • the playground this object belongs to +
+ Typically, updateObject would check whether an object leaves the screen to react appropriately. + In that case the object can be marked for deletion (by adding it to the flag "deleted" that is + always defined for any playground), but of course other reactions are possible like rebounding, + emerging on the other side, ...
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ObjectController

      +
      public ObjectController()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setObject

      +
      public void setObject(GameObject gameObject)
      +
      +
    • +
    • +
      +

      setDummy

      +
      public void setDummy(String x)
      +
      +
    • +
    • +
      +

      updateObject

      +
      public abstract void updateObject()
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the gameObject correctly.
      +
      +
    • +
    • +
      +

      applySpeedVector

      +
      public void applySpeedVector()
      +
      Convenience method: simply moves the object forward one step from its present position, using + its present speed.
      +
      +
    • +
    • +
      +

      getTimestep

      +
      public double getTimestep()
      +
      +
    • +
    • +
      +

      getX

      +
      public double getX()
      +
      +
    • +
    • +
      +

      getY

      +
      public double getY()
      +
      +
    • +
    • +
      +

      getVX

      +
      public double getVX()
      +
      +
    • +
    • +
      +

      getVY

      +
      public double getVY()
      +
      +
    • +
    • +
      +

      setX

      +
      public void setX(double x)
      +
      +
    • +
    • +
      +

      setY

      +
      public void setY(double y)
      +
      +
    • +
    • +
      +

      setVX

      +
      public void setVX(double vx)
      +
      +
    • +
    • +
      +

      setVY

      +
      public void setVY(double vy)
      +
      +
    • +
    • +
      +

      getPlayground

      +
      public Playground getPlayground()
      +
      +
    • +
    • +
      +

      setPlayground

      +
      public void setPlayground(Playground playground)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/SimpleShotController.html b/prog2-codebase/GameProject/doc/controller/SimpleShotController.html new file mode 100644 index 0000000..fed6c6a --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/SimpleShotController.html @@ -0,0 +1,179 @@ + + + + +SimpleShotController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class SimpleShotController

+
+
java.lang.Object +
controller.ObjectController +
controller.SimpleShotController
+
+
+
+
+
public class SimpleShotController +extends ObjectController
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SimpleShotController

      +
      public SimpleShotController()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Specified by:
      +
      updateObject in class ObjectController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/ZickZackController.html b/prog2-codebase/GameProject/doc/controller/ZickZackController.html new file mode 100644 index 0000000..f3c5c2f --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/ZickZackController.html @@ -0,0 +1,183 @@ + + + + +ZickZackController + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package controller
+

Class ZickZackController

+
+ +
+
+
public class ZickZackController +extends EnemyController
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      ZickZackController

      +
      public ZickZackController(double gameTime, + double dt)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      Description copied from class: ObjectController
      +
      Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
      + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
      + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
      +
      +
      Overrides:
      +
      updateObject in class EnemyController
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/CollisionAwareEgoController.html b/prog2-codebase/GameProject/doc/controller/class-use/CollisionAwareEgoController.html new file mode 100644 index 0000000..4f4507a --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/CollisionAwareEgoController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.CollisionAwareEgoController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.CollisionAwareEgoController

+
+No usage of controller.CollisionAwareEgoController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/EgoController.html b/prog2-codebase/GameProject/doc/controller/class-use/EgoController.html new file mode 100644 index 0000000..58ee135 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/EgoController.html @@ -0,0 +1,88 @@ + + + + +Uses of Class controller.EgoController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.EgoController

+
+
Packages that use EgoController
+
+
Package
+
Description
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/EnemyController.html b/prog2-codebase/GameProject/doc/controller/class-use/EnemyController.html new file mode 100644 index 0000000..2b46d56 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/EnemyController.html @@ -0,0 +1,86 @@ + + + + +Uses of Class controller.EnemyController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.EnemyController

+
+
Packages that use EnemyController
+
+
Package
+
Description
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/FallingStarController.html b/prog2-codebase/GameProject/doc/controller/class-use/FallingStarController.html new file mode 100644 index 0000000..46efbd0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/FallingStarController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.FallingStarController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.FallingStarController

+
+No usage of controller.FallingStarController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/LimitedTimeController.html b/prog2-codebase/GameProject/doc/controller/class-use/LimitedTimeController.html new file mode 100644 index 0000000..7389bd0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/LimitedTimeController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.LimitedTimeController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.LimitedTimeController

+
+No usage of controller.LimitedTimeController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/MineController.html b/prog2-codebase/GameProject/doc/controller/class-use/MineController.html new file mode 100644 index 0000000..6f0e0f5 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/MineController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.MineController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.MineController

+
+No usage of controller.MineController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/ObjectController.html b/prog2-codebase/GameProject/doc/controller/class-use/ObjectController.html new file mode 100644 index 0000000..16f47e5 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/ObjectController.html @@ -0,0 +1,189 @@ + + + + +Uses of Class controller.ObjectController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.ObjectController

+
+
Packages that use ObjectController
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/SimpleShotController.html b/prog2-codebase/GameProject/doc/controller/class-use/SimpleShotController.html new file mode 100644 index 0000000..7825b3b --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/SimpleShotController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.SimpleShotController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.SimpleShotController

+
+No usage of controller.SimpleShotController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/class-use/ZickZackController.html b/prog2-codebase/GameProject/doc/controller/class-use/ZickZackController.html new file mode 100644 index 0000000..185878c --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/class-use/ZickZackController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.ZickZackController + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
controller.ZickZackController

+
+No usage of controller.ZickZackController
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/package-summary.html b/prog2-codebase/GameProject/doc/controller/package-summary.html new file mode 100644 index 0000000..6645b2d --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/package-summary.html @@ -0,0 +1,124 @@ + + + + +controller + + + + + + + + + + + + + + + +
+ +
+
+
+

Package controller

+
+
+
package controller
+
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties. Object controllers react to user actions/inputs + and govern for example the movement of GameObject instances. They can access + their parent objects' properties and, by indirection, the properties and methods of the + associated level.
+ Controllers should be designed in such a way that they implement behavior that is + level-independent. All level-dependent behavior should be implemented in + Playground.applyGameLogic().
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/package-tree.html b/prog2-codebase/GameProject/doc/controller/package-tree.html new file mode 100644 index 0000000..6eca1a9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/package-tree.html @@ -0,0 +1,89 @@ + + + + +controller Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package controller

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/controller/package-use.html b/prog2-codebase/GameProject/doc/controller/package-use.html new file mode 100644 index 0000000..14d354b --- /dev/null +++ b/prog2-codebase/GameProject/doc/controller/package-use.html @@ -0,0 +1,127 @@ + + + + +Uses of Package controller + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
controller

+
+
Packages that use controller
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+
+
+
    +
  • +
    +
    Classes in controller used by collider
    +
    +
    Class
    +
    Description
    + +
    +
    Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in controller used by controller
    +
    +
    Class
    +
    Description
    + +
    +
    Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
    +
    + +
    +
    This class controls the space invaders.
    +
    + +
    +
    Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in controller used by gameobjects
    +
    +
    Class
    +
    Description
    + +
    +
    Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/element-list b/prog2-codebase/GameProject/doc/element-list new file mode 100644 index 0000000..05a42d6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/element-list @@ -0,0 +1,7 @@ +base +collider +controller +gameobjects +playground +rendering +ui diff --git a/prog2-codebase/GameProject/doc/gameobjects/AnimatedGameobject.html b/prog2-codebase/GameProject/doc/gameobjects/AnimatedGameobject.html new file mode 100644 index 0000000..2202771 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/AnimatedGameobject.html @@ -0,0 +1,202 @@ + + + + +AnimatedGameobject + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class AnimatedGameobject

+
+
java.lang.Object +
gameobjects.GameObject +
gameobjects.AnimatedGameobject
+
+
+
+
+
public class AnimatedGameobject +extends GameObject
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AnimatedGameobject

      +
      public AnimatedGameobject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double scale, + Animation anim, + double t0, + String abspielmodus)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      generateColliders

      +
      public GameObject generateColliders()
      +
      Description copied from class: GameObject
      +
      generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
      +
      +
      Overrides:
      +
      generateColliders in class GameObject
      +
      Returns:
      +
      instance of this GameObject (this).
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/EgoObject.html b/prog2-codebase/GameProject/doc/gameobjects/EgoObject.html new file mode 100644 index 0000000..0ac6e74 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/EgoObject.html @@ -0,0 +1,196 @@ + + + + +EgoObject + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class EgoObject

+
+
java.lang.Object +
gameobjects.GameObject +
gameobjects.EgoObject
+
+
+
+
+
public class EgoObject +extends GameObject
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      EgoObject

      +
      public EgoObject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double egoRad)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      generateColliders

      +
      public GameObject generateColliders()
      +
      Description copied from class: GameObject
      +
      generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
      +
      +
      Overrides:
      +
      generateColliders in class GameObject
      +
      Returns:
      +
      instance of this GameObject (this).
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/FallingStar.html b/prog2-codebase/GameProject/doc/gameobjects/FallingStar.html new file mode 100644 index 0000000..71533cf --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/FallingStar.html @@ -0,0 +1,156 @@ + + + + +FallingStar + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class FallingStar

+
+
java.lang.Object +
gameobjects.GameObject +
gameobjects.FallingStar
+
+
+
+
+
public class FallingStar +extends GameObject
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      FallingStar

      +
      public FallingStar(String id, + Playground playground, + double x, + double y, + double vx, + double vy, + Color color, + double rad)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/GameObject.html b/prog2-codebase/GameProject/doc/gameobjects/GameObject.html new file mode 100644 index 0000000..9fb46de --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/GameObject.html @@ -0,0 +1,740 @@ + + + + +GameObject + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class GameObject

+
+
java.lang.Object +
gameobjects.GameObject
+
+
+
+
Direct Known Subclasses:
+
AnimatedGameobject, EgoObject, FallingStar, RectObject, TextObject
+
+
+
public abstract class GameObject +extends Object
+
The class GameObject represents a (possibly animated) object appearing in a level of the + game. It is therefore attached to an instance of the class Playground. A GameObject has + at least the following properties: +
    +
  • 2D screen position +
  • 2D speed +
  • a name that is unique within a certain Playground
    +
  • a reference to the Playground object it belongs to
    +
  • a reference to an instance of ObjectController that handles the movement + logic of the object
    +
  • a (circular) radius for simple collision checking. This may be handled differently in + subclasses
    +
+ The main task of GameObject, or its subclasses, is to draw the object on the screen, which is + handles by the draw(Graphics2D) method. It is this method that must be redefined if a + new appearance should be realized. For introducing new behavior, it is sufficient to supply a + different ObjectController instance when constructing a GameObject.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    + +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      GameObject

      +
      public GameObject(String id, + Playground playground, + double x, + double y, + double vx, + double vy)
      +
      Constructor to initialize a GameObject, respectively set the current Playground + instance this GameObject belongs to.
      +
      +
      Parameters:
      +
      id - unique ID for this GameObject (should not be null or empty String)
      +
      playground - the Playground the GameObject belongs to (should not be null)
      +
      x - initial screen position in direction horizontal (positive value including zero)
      +
      y - initial screen position in direction vertical (positive value including zero)
      +
      vx - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
      +
      vy - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
      +
      +
      +
    • +
    • +
      +

      GameObject

      +
      public GameObject(String id, + Playground playground, + ObjectController controller, + double x, + double y, + double vx, + double vy)
      +
      Constructor to initialize a GameObject, respectively set the current Playground instance this + GameObject belongs to.
      +
      +
      Parameters:
      +
      id - unique ID for this GameObject (should not be null or empty String)
      +
      playground - the Playground the GameObject belongs to (should not be null)
      +
      controller - controller instance to be used for this GameObject (can be null)
      +
      x - initial screen position in direction horizontal (positive value including zero)
      +
      y - initial screen position in direction vertical (positive value including zero)
      +
      vx - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
      +
      vy - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      setColliders

      +
      public void setColliders(LinkedList<Collider> l)
      +
      sets colliders.
      +
      +
      Parameters:
      +
      l - LinkedList of Colliders.
      +
      +
      +
    • +
    • +
      +

      generateColliders

      +
      public GameObject generateColliders()
      +
      generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
      +
      +
      Returns:
      +
      instance of this GameObject (this).
      +
      +
      +
    • +
    • +
      +

      addController

      +
      public GameObject addController(ObjectController c)
      +
      Sets the controller to use for this GameObject's logical behavior.
      +
      +
      Parameters:
      +
      c - instance to be used.
      +
      Returns:
      +
      the current instance (this).
      +
      +
      +
    • +
    • +
      +

      addArtist

      +
      public GameObject addArtist(Artist a)
      +
      Sets the artist to be used for drawing the object onto visible canvas area.
      +
      +
      Parameters:
      +
      a - instance to be used for calling Artist.draw(Graphics2D).
      +
      Returns:
      +
      the current instance (this).
      +
      +
      +
    • +
    • +
      +

      addCollider

      +
      public void addCollider(Collider c)
      +
      saves the collider in the internal list of Colliders to be used for this GameObject.
      +
      +
      Parameters:
      +
      c - instance to be added to internal list
      +
      +
      +
    • +
    • +
      +

      getPlayground

      +
      public Playground getPlayground()
      +
      +
    • +
    • +
      +

      setPlayground

      +
      public void setPlayground(Playground playground)
      +
      +
    • +
    • +
      +

      setComponentProperty

      +
      public void setComponentProperty(String comp, + String property, + Object value)
      +
      calls via reflection a method of a component if this GameObjects instance and provides the + given value as String parameter.
      +
      +
      Parameters:
      +
      comp - class name of GameObject component. Currently only "controller" is supported, + otherwise nothing happens.
      +
      property - method name of the component to call.
      +
      value - argument to pass to the method as String parameter.
      +
      +
      +
    • +
    • +
      +

      setObjectFlag

      +
      public void setObjectFlag(String flag, + Object value)
      +
      +
    • +
    • +
      +

      getObjectFlag

      +
      public Object getObjectFlag(String flag)
      +
      +
    • +
    • +
      +

      getOrCreateObjectFlag

      +
      public Object getOrCreateObjectFlag(String flag, + Object createValue)
      +
      +
    • +
    • +
      +

      isActive

      +
      public boolean isActive()
      +
      +
    • +
    • +
      +

      setActive

      +
      public GameObject setActive(boolean flag)
      +
      +
    • +
    • +
      +

      getId

      +
      public String getId()
      +
      return the unique object ID.
      +
      +
      Returns:
      +
      unique object ID
      +
      +
      +
    • +
    • +
      +

      getX

      +
      public double getX()
      +
      gets the screen X position.
      +
      +
      Returns:
      +
      screen x position
      +
      +
      +
    • +
    • +
      +

      getY

      +
      public double getY()
      +
      gets the screen Y position.
      +
      +
      Returns:
      +
      screen Y position
      +
      +
      +
    • +
    • +
      +

      getVX

      +
      public double getVX()
      +
      gets the screen X speed in pixels per frame.
      +
      +
      Returns:
      +
      screen x speed
      +
      +
      +
    • +
    • +
      +

      getVY

      +
      public double getVY()
      +
      gets the screen Y speed in pixels per frame.
      +
      +
      Returns:
      +
      screen y speed
      +
      +
      +
    • +
    • +
      +

      setX

      +
      public void setX(double x)
      +
      set screen x position.
      +
      +
      Parameters:
      +
      x - new position
      +
      +
      +
    • +
    • +
      +

      setY

      +
      public void setY(double y)
      +
      set screen y position.
      +
      +
      Parameters:
      +
      y - new position
      +
      +
      +
    • +
    • +
      +

      setVX

      +
      public void setVX(double vx)
      +
      set screen x speed in pixel per frame
      +
      +
      Parameters:
      +
      vx - new x speed
      +
      +
      +
    • +
    • +
      +

      setVY

      +
      public void setVY(double vy)
      +
      set screen y speed in pixel per frame.
      +
      +
      Parameters:
      +
      vy - new y speed.
      +
      +
      +
    • +
    • +
      +

      setObjectController

      +
      public void setObjectController(ObjectController controller)
      +
      Sets a new object controller (replaces any former one).
      +
      +
      Parameters:
      +
      controller - An instance of ObjectController or one of its subclasses.
      +
      +
      +
    • +
    • +
      +

      getObjectController

      +
      public ObjectController getObjectController()
      +
      Access to object controller.
      +
      +
      Returns:
      +
      the controller for this object.
      +
      +
      +
    • +
    • +
      +

      getGameTime

      +
      public double getGameTime()
      +
      +
    • +
    • +
      +

      collisionDetection

      +
      public boolean collisionDetection(GameObject other)
      +
      Collision detection implemented by iteration through the own list of Collider + and calling their Collider.collidesWith(Collider) method to check collision + with the given parameter instance of other GameObject.
      +
      +
      Parameters:
      +
      other - instance of the other GameObject to check collision with
      +
      Returns:
      +
      true if collision is detected, false otherwise
      +
      +
      +
    • +
    • +
      +

      updateObject

      +
      public void updateObject()
      +
      triggers this GameObjects own controller (if set) to update the object.
      +
      +
      See Also:
      +
      +
        +
      • controller
      • +
      +
      +
      +
      +
    • +
    • +
      +

      draw

      +
      public void draw(Graphics2D g)
      +
      Draws the object in its current state. Is called by the game engine, should NOT be called + otherwise.
      +
      +
      Parameters:
      +
      g - object that has all the necessary drawing functionalities
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/RectObject.html b/prog2-codebase/GameProject/doc/gameobjects/RectObject.html new file mode 100644 index 0000000..f5632bb --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/RectObject.html @@ -0,0 +1,251 @@ + + + + +RectObject + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class RectObject

+
+
java.lang.Object +
gameobjects.GameObject +
gameobjects.RectObject
+
+
+
+
+
public class RectObject +extends GameObject
+
A rectangle object.
+ If generateColliders() is called, it generates a RectCollider with id-prefix + "shotcollider_" and registers it for this RectObject.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RectObject

      +
      public RectObject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double width, + double height, + Color color)
      +
      Initializes the RectObject with a suitable RectArtist for drawing the RectObject.
      +
      +
      Parameters:
      +
      id - String unique name to be used.
      +
      pg - Playground instance this RectObject belongs to (the level it belongs to).
      +
      x - position in horizontal direction in pixels (zero or positive number).
      +
      y - position in vertical direction in pixels (zero or positive number).
      +
      vx - speed/velocity in horizontal direction in pixels (negative, zero or positive number).
      +
      vy - speed/velocity in vertical direction in pixels (negative, zero or positive number).
      +
      width - in pixels
      +
      height - in pixels
      +
      color - solid color for the whole object, used to initialize an instance of + RectArtist used for this RectObject.
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      generateColliders

      +
      public RectObject generateColliders()
      +
      generates a new RectCollider with id-prefix "shotcollider_" and registers it for 'this' + [@link RectObject}. The RectCollider uses the same dimensions (width and height) as this RectObject.
      +
      +
      Overrides:
      +
      generateColliders in class GameObject
      +
      Returns:
      +
      this RectObject itself
      +
      +
      +
    • +
    • +
      +

      getWidth

      +
      public double getWidth()
      +
      Getter for the width
      +
      +
      Returns:
      +
      double width value as set by constructor
      +
      +
      +
    • +
    • +
      +

      getHeight

      +
      public double getHeight()
      +
      Getter for the height
      +
      +
      Returns:
      +
      double height value as set by constructor
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/TextObject.html b/prog2-codebase/GameProject/doc/gameobjects/TextObject.html new file mode 100644 index 0000000..a8dc150 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/TextObject.html @@ -0,0 +1,237 @@ + + + + +TextObject + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package gameobjects
+

Class TextObject

+
+
java.lang.Object +
gameobjects.GameObject +
gameobjects.TextObject
+
+
+
+
+
public class TextObject +extends GameObject
+
Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text. The controller is left undefined, the collider as + well. However, a single call to the overwritten method generateColliders() will in fact + generate a RectCollider of just the right size for the text.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      TextObject

      +
      public TextObject(String id, + Playground playground, + double x, + double y, + double vx, + double vy, + String text, + int size, + Color textColor)
      +
      Constructor.
      +
      +
      Parameters:
      +
      id - object name
      +
      playground - containing Playground instance
      +
      x - positionx
      +
      y - positiony
      +
      vx - speedx
      +
      vy - speedy
      +
      size - font size in Pixel
      +
      text - String to be displayed
      +
      textColor - text color, see java.awt.Color
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getText

      +
      public String getText()
      +
      +
    • +
    • +
      +

      setText

      +
      public void setText(String s)
      +
      +
    • +
    • +
      +

      generateColliders

      +
      public TextObject generateColliders()
      +
      Description copied from class: GameObject
      +
      generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
      +
      +
      Overrides:
      +
      generateColliders in class GameObject
      +
      Returns:
      +
      instance of this GameObject (this).
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html new file mode 100644 index 0000000..b3ce545 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.AnimatedGameobject + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.AnimatedGameobject

+
+No usage of gameobjects.AnimatedGameobject
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/EgoObject.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/EgoObject.html new file mode 100644 index 0000000..1747f74 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/EgoObject.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.EgoObject + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.EgoObject

+
+No usage of gameobjects.EgoObject
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/FallingStar.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/FallingStar.html new file mode 100644 index 0000000..262f368 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/FallingStar.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.FallingStar + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.FallingStar

+
+No usage of gameobjects.FallingStar
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/GameObject.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/GameObject.html new file mode 100644 index 0000000..95eede6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/GameObject.html @@ -0,0 +1,323 @@ + + + + +Uses of Class gameobjects.GameObject + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.GameObject

+
+
Packages that use GameObject
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/RectObject.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/RectObject.html new file mode 100644 index 0000000..92b52a6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/RectObject.html @@ -0,0 +1,86 @@ + + + + +Uses of Class gameobjects.RectObject + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.RectObject

+
+
Packages that use RectObject
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/class-use/TextObject.html b/prog2-codebase/GameProject/doc/gameobjects/class-use/TextObject.html new file mode 100644 index 0000000..d1fe78f --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/class-use/TextObject.html @@ -0,0 +1,83 @@ + + + + +Uses of Class gameobjects.TextObject + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
gameobjects.TextObject

+
+
Packages that use TextObject
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/package-summary.html b/prog2-codebase/GameProject/doc/gameobjects/package-summary.html new file mode 100644 index 0000000..d518521 --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/package-summary.html @@ -0,0 +1,101 @@ + + + + +gameobjects + + + + + + + + + + + + + + + +
+ +
+
+
+

Package gameobjects

+
+
+
package gameobjects
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/package-tree.html b/prog2-codebase/GameProject/doc/gameobjects/package-tree.html new file mode 100644 index 0000000..4d85eea --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/package-tree.html @@ -0,0 +1,80 @@ + + + + +gameobjects Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package gameobjects

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/gameobjects/package-use.html b/prog2-codebase/GameProject/doc/gameobjects/package-use.html new file mode 100644 index 0000000..9b1ab9a --- /dev/null +++ b/prog2-codebase/GameProject/doc/gameobjects/package-use.html @@ -0,0 +1,159 @@ + + + + +Uses of Package gameobjects + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
gameobjects

+
+
Packages that use gameobjects
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/help-doc.html b/prog2-codebase/GameProject/doc/help-doc.html new file mode 100644 index 0000000..2dbc07a --- /dev/null +++ b/prog2-codebase/GameProject/doc/help-doc.html @@ -0,0 +1,187 @@ + + + + +API Help + + + + + + + + + + + + + + + +
+ +
+
+

JavaDoc Help

+ +
+
+

Navigation

+Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
+
+
+

Kinds of Pages

+The following sections describe the different kinds of pages in this collection. +
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enums
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Types
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Enum Constant Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
+
+
    +
  • Enum Constant Details
  • +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
  • Element Details
  • +
+

Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Other Files

+

Packages and modules may contain pages with additional information related to the declarations nearby.

+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
  • +
+
+
+

Constant Field Values

+

The Constant Field Values page lists the static final fields and their values.

+
+
+

All Packages

+

The All Packages page contains an alphabetic index of all packages contained in the documentation.

+
+
+

All Classes and Interfaces

+

The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

+
+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-1.html b/prog2-codebase/GameProject/doc/index-files/index-1.html new file mode 100644 index 0000000..765dc67 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-1.html @@ -0,0 +1,131 @@ + + + + +A-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

A

+
+
ACTION_ABOUT - Static variable in class ui.GameUI
+
 
+
ACTION_BUTTON - Static variable in class ui.GameUI
+
 
+
ACTION_LOAD - Static variable in class ui.GameUI
+
 
+
ACTION_NEW - Static variable in class ui.GameUI
+
 
+
ACTION_PAUSE - Static variable in class ui.GameUI
+
 
+
ACTION_QUIT - Static variable in class ui.GameUI
+
 
+
ACTION_RESET - Static variable in class ui.GameUI
+
 
+
ACTION_SAVE - Static variable in class ui.GameUI
+
 
+
actionPerformed(ActionEvent) - Method in class ui.GameUI
+
+
interface implementation of ActionListener to respond to GUI element actions.
+
+
addArtist(Artist) - Method in class gameobjects.GameObject
+
+
Sets the artist to be used for drawing the object onto visible canvas area.
+
+
addCollider(Collider) - Method in class gameobjects.GameObject
+
+
saves the collider in the internal list of Colliders to be used for this GameObject.
+
+
addController(ObjectController) - Method in class gameobjects.GameObject
+
+
Sets the controller to use for this GameObject's logical behavior.
+
+
addObject(GameObject) - Method in class playground.Playground
+
+
Adds a graphics object to a level.
+
+
addObjectNow(GameObject) - Method in class playground.Playground
+
+
Adds a graphics object to a level.
+
+
AnimatedGameobject - Class in gameobjects
+
 
+
AnimatedGameobject(String, Playground, double, double, double, double, double, Animation, double, String) - Constructor for class gameobjects.AnimatedGameobject
+
 
+
Animation - Class in playground
+
 
+
Animation(String) - Constructor for class playground.Animation
+
 
+
AnimationArtist - Class in rendering
+
 
+
AnimationArtist(GameObject, Animation, double, String, double) - Constructor for class rendering.AnimationArtist
+
 
+
applyGameLogic() - Method in class playground.Playground
+
+
Method meant to be filled with own code, handles the entore game logic (collision checks, timed + events, ...).
+
+
applyGameLogic() - Method in class playground.SpaceInvadersLevel
+
+
applies the logic of the level: For now, this is just about deleting shots that are leaving the + screen and calling methods 'actionIf..' in case objects collide.
+
+
applySpeedVector() - Method in class controller.ObjectController
+
+
Convenience method: simply moves the object forward one step from its present position, using + its present speed.
+
+
Artist - Class in rendering
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-10.html b/prog2-codebase/GameProject/doc/index-files/index-10.html new file mode 100644 index 0000000..5c3e260 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-10.html @@ -0,0 +1,135 @@ + + + + +L-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

L

+
+
Level1 - Class in playground
+
+
extends SpaceInvadersLevel with a boring start message
+
+
Level1() - Constructor for class playground.Level1
+
 
+
Level2 - Class in playground
+
+
extends extends SpaceInvadersLevel with a different startup message.
+
+
Level2() - Constructor for class playground.Level2
+
 
+
Level3 - Class in playground
+
+
extends SpaceInvadersLevel with a ZigZack move of the enemies in + Level3.createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different Level3.getStartupMessage().
+
+
Level3() - Constructor for class playground.Level3
+
 
+
Level4 - Class in playground
+
+
extends extends SpaceInvadersLevel + + Hit aliens twice to kill them + they say AUA when not destroyed +
+
+
Level4() - Constructor for class playground.Level4
+
 
+
Level5 - Class in playground
+
 
+
Level5() - Constructor for class playground.Level5
+
 
+
Level6 - Class in playground
+
 
+
Level6() - Constructor for class playground.Level6
+
 
+
Level7 - Class in playground
+
 
+
Level7() - Constructor for class playground.Level7
+
 
+
LevelBoss - Class in playground
+
+
Class that realizes all the game logic of a very simple game level.
+
+
LevelBoss() - Constructor for class playground.LevelBoss
+
 
+
levelFinished() - Method in class playground.Playground
+
 
+
levelFinished() - Method in class playground.SpaceInvadersLevel
+
 
+
LevelHitTwice - Class in playground
+
+
extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
+
+
LevelHitTwice() - Constructor for class playground.LevelHitTwice
+
+
constructor setting internal name to 'hitTwice'
+
+
LevelWithBox - Class in playground
+
 
+
LevelWithBox() - Constructor for class playground.LevelWithBox
+
 
+
LimitedTimeController - Class in controller
+
+
Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
+
+
LimitedTimeController(double, double) - Constructor for class controller.LimitedTimeController
+
+
Constructor.
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-11.html b/prog2-codebase/GameProject/doc/index-files/index-11.html new file mode 100644 index 0000000..779dc24 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-11.html @@ -0,0 +1,92 @@ + + + + +M-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

M

+
+
main(String[]) - Static method in class base.GameLoop
+
+
main to start the whole application.
+
+
main(String[]) - Static method in class base.MultiLevelGame
+
 
+
MASK - Static variable in class gameobjects.GameObject
+
 
+
MAX_HITS - Static variable in class playground.Level4
+
+
constant defining the number of shots needed to destroy an enemy
+
+
MAX_HITS - Static variable in class playground.LevelHitTwice
+
+
constant defining the number of shots needed to destroy an enemy
+
+
MineController - Class in controller
+
 
+
MineController(double) - Constructor for class controller.MineController
+
 
+
MultiLevelGame - Class in base
+
 
+
MultiLevelGame() - Constructor for class base.MultiLevelGame
+
 
+
music(File) - Static method in class playground.Music
+
 
+
Music - Class in playground
+
 
+
Music() - Constructor for class playground.Music
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-12.html b/prog2-codebase/GameProject/doc/index-files/index-12.html new file mode 100644 index 0000000..1e15825 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-12.html @@ -0,0 +1,85 @@ + + + + +O-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

O

+
+
ObjectController - Class in controller
+
+
Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
+
+
ObjectController() - Constructor for class controller.ObjectController
+
 
+
onDown(KeyEvent, GameObject) - Method in class controller.EgoController
+
 
+
onLeft(KeyEvent, GameObject) - Method in class controller.EgoController
+
 
+
onRight(KeyEvent, GameObject) - Method in class controller.EgoController
+
 
+
onSpace(KeyEvent, GameObject) - Method in class controller.CollisionAwareEgoController
+
 
+
onSpace(KeyEvent, GameObject) - Method in class controller.EgoController
+
+
behavior for shooting on key space
+
+
onStop(KeyEvent, GameObject) - Method in class controller.EgoController
+
 
+
onUp(KeyEvent, GameObject) - Method in class controller.EgoController
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-13.html b/prog2-codebase/GameProject/doc/index-files/index-13.html new file mode 100644 index 0000000..111139e --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-13.html @@ -0,0 +1,97 @@ + + + + +P-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

P

+
+
playground - package playground
+
 
+
Playground - Class in playground
+
+
Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
+
+
Playground() - Constructor for class playground.Playground
+
 
+
preferredSizeX() - Method in class playground.Playground
+
 
+
preferredSizeX() - Method in class playground.SpaceInvadersLevel
+
+
calculates and returns the preferred size of the level (in pixel) for X-direction
+
+
preferredSizeY() - Method in class playground.Playground
+
 
+
preferredSizeY() - Method in class playground.SpaceInvadersLevel
+
+
calculates and returns the preferred size of the level (in pixel) for Y-direction
+
+
prepareLevel(String) - Method in class playground.Playground
+
+
Sets up a single level.
+
+
prepareLevel(String) - Method in class playground.SpaceInvadersLevel
+
+
initially sets up the level.
+
+
processKeyEvents(Stack<KeyEvent>) - Method in class playground.Playground
+
+
Method meant to be filled with own code, processes Keyboard inputs.
+
+
processMouseEvents(Stack<MouseEvent>) - Method in class playground.Playground
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-14.html b/prog2-codebase/GameProject/doc/index-files/index-14.html new file mode 100644 index 0000000..4c2e22b --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-14.html @@ -0,0 +1,121 @@ + + + + +R-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

R

+
+
RADIUS - Static variable in class gameobjects.GameObject
+
 
+
readHSFromFile() - Method in class playground.HighscoreManager
+
 
+
RECTANGLE - Static variable in class gameobjects.GameObject
+
 
+
RectArtist - Class in rendering
+
 
+
RectArtist(GameObject, double, double, Color) - Constructor for class rendering.RectArtist
+
 
+
RectCollider - Class in collider
+
+
a Collider for Rectangles, usually used for RectObject instances.
+
+
RectCollider(String, GameObject, double, double) - Constructor for class collider.RectCollider
+
+
initializes this RectCollider.
+
+
RectObject - Class in gameobjects
+
+
A rectangle object.
+
+
RectObject(String, Playground, double, double, double, double, double, double, Color) - Constructor for class gameobjects.RectObject
+
+
Initializes the RectObject with a suitable RectArtist for drawing the RectObject.
+
+
redraw(Graphics2D) - Method in class playground.Playground
+
+
Internal, do not call directly.
+
+
redrawLevel(Graphics2D) - Method in class playground.Playground
+
+
To be redefined!!
+
+
redrawLevel(Graphics2D) - Method in class playground.SpaceInvadersLevel
+
+
(re)draws the level but NOT the objects, they draw themselves.
+
+
rendering - package rendering
+
 
+
repaint() - Method in class ui.GameUI
+
 
+
reset() - Method in class playground.Playground
+
+
Reinitializes the level.
+
+
resetAction() - Static method in class ui.GameUI
+
 
+
resetFlags(int) - Method in class playground.Playground
+
+
mode can be: FLAGS_ALL (all), FLAGS_GLOBAL(global), FLAGs_LEVEL(level)
+
+
restoreDynamicState() - Method in class controller.CollisionAwareEgoController
+
 
+
runGame(String[]) - Method in class base.GameLoop
+
+
loops over all GameLoop.levels and implements the game loop to update continuously the level + during play time
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-15.html b/prog2-codebase/GameProject/doc/index-files/index-15.html new file mode 100644 index 0000000..95fadc8 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-15.html @@ -0,0 +1,191 @@ + + + + +S-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

S

+
+
save() - Static method in class playground.SaveGame
+
 
+
saveDynamicState() - Method in class controller.CollisionAwareEgoController
+
 
+
SaveGame - Class in playground
+
 
+
SaveGame() - Constructor for class playground.SaveGame
+
 
+
scol - Variable in class gameobjects.GameObject
+
 
+
setActive(boolean) - Method in class gameobjects.GameObject
+
 
+
setColliders(LinkedList<Collider>) - Method in class gameobjects.GameObject
+
+
sets colliders.
+
+
setComponentProperty(String, String, Object) - Method in class gameobjects.GameObject
+
+
calls via reflection a method of a component if this GameObjects instance and provides the + given value as String parameter.
+
+
setController(ObjectController) - Method in class collider.Collider
+
+
setter for GameController
+
+
setDummy(String) - Method in class controller.ObjectController
+
 
+
setGameTime(double) - Method in class playground.Playground
+
+
set the game time value (in seconds)
+
+
setGlobalFlag(String, Object) - Static method in class playground.Playground
+
+
Sets a level-wide permanent flag.
+
+
setLevelFlag(String, Object) - Method in class playground.Playground
+
 
+
setObject(GameObject) - Method in class collider.Collider
+
+
setter for corresponding GameObject
+
+
setObject(GameObject) - Method in class controller.ObjectController
+
 
+
setObjectController(ObjectController) - Method in class gameobjects.GameObject
+
+
Sets a new object controller (replaces any former one).
+
+
setObjectFlag(String, Object) - Method in class gameobjects.GameObject
+
 
+
setOffsets(double, double) - Method in class collider.Collider
+
+
setter for offset values to be used relative to GameObject center. default is zero.
+
+
setPainting() - Method in class ui.GameUI
+
 
+
setPaused(boolean) - Method in class playground.Playground
+
 
+
setPlayground(Playground) - Method in class collider.Collider
+
+
setter for Playground instance this collider belongs to
+
+
setPlayground(Playground) - Method in class controller.ObjectController
+
 
+
setPlayground(Playground) - Method in class gameobjects.GameObject
+
 
+
setPlayground(Playground) - Method in class ui.GameUI
+
 
+
setText(String) - Method in class gameobjects.TextObject
+
 
+
setText(String) - Method in class rendering.TextArtist
+
 
+
setTextHeight(double) - Method in class rendering.TextArtist
+
 
+
setTextWidth(double) - Method in class rendering.TextArtist
+
 
+
setTimestep(double) - Method in class playground.Playground
+
 
+
setVX(double) - Method in class controller.ObjectController
+
 
+
setVX(double) - Method in class gameobjects.GameObject
+
+
set screen x speed in pixel per frame
+
+
setVY(double) - Method in class controller.ObjectController
+
 
+
setVY(double) - Method in class gameobjects.GameObject
+
+
set screen y speed in pixel per frame.
+
+
setX(double) - Method in class controller.ObjectController
+
 
+
setX(double) - Method in class gameobjects.GameObject
+
+
set screen x position.
+
+
setY(double) - Method in class controller.ObjectController
+
 
+
setY(double) - Method in class gameobjects.GameObject
+
+
set screen y position.
+
+
SHOTSPEED - Static variable in class playground.SpaceInvadersLevel
+
 
+
showtimeList - Variable in class playground.Animation
+
 
+
SimpleShotController - Class in controller
+
 
+
SimpleShotController() - Constructor for class controller.SimpleShotController
+
 
+
SIZEX - Static variable in class base.GameLoop
+
+
Pixel width of Game GUI ( above 0)
+
+
SIZEY - Static variable in class base.GameLoop
+
+
Pixel height of Game GUI (above 0)
+
+
SpaceInvadersLevel - Class in playground
+
+
Class that realizes all the game logic of a very simple game level.
+
+
SpaceInvadersLevel() - Constructor for class playground.SpaceInvadersLevel
+
 
+
stopObject() - Method in class controller.CollisionAwareEgoController
+
 
+
stopObject() - Method in class controller.EgoController
+
+
checks the position and respects level boundaries and own radius or width/height set on constructor.
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-16.html b/prog2-codebase/GameProject/doc/index-files/index-16.html new file mode 100644 index 0000000..afc54f5 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-16.html @@ -0,0 +1,89 @@ + + + + +T-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

T

+
+
TextArtist - Class in rendering
+
+
Rendering an object as a text of a specified color, size and font.
+
+
TextArtist(GameObject, String, int, Color) - Constructor for class rendering.TextArtist
+
+
Constructor to intitialize the TextArtist attributes
+
+
TextObject - Class in gameobjects
+
+
Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text.
+
+
TextObject(String, Playground, double, double, double, double, String, int, Color) - Constructor for class gameobjects.TextObject
+
+
Constructor.
+
+
togglePause() - Method in class playground.Playground
+
 
+
toString() - Method in class collider.CircleCollider
+
+
simple concatenation of all attributes (x,y,r)
+
+
toString() - Method in class collider.Collider
+
 
+
toString() - Method in class collider.RectCollider
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-17.html b/prog2-codebase/GameProject/doc/index-files/index-17.html new file mode 100644 index 0000000..76d75ab --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-17.html @@ -0,0 +1,92 @@ + + + + +U-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

U

+
+
ui - package ui
+
 
+
updateObject() - Method in class controller.EgoController
+
+
updates position based on key events (mouse currently ignored)
+
+
updateObject() - Method in class controller.EnemyController
+
 
+
updateObject() - Method in class controller.FallingStarController
+
 
+
updateObject() - Method in class controller.LimitedTimeController
+
 
+
updateObject() - Method in class controller.MineController
+
 
+
updateObject() - Method in class controller.ObjectController
+
+
Is called once every game time step by the game itself.
+
+
updateObject() - Method in class controller.SimpleShotController
+
 
+
updateObject() - Method in class controller.ZickZackController
+
 
+
updateObject() - Method in class gameobjects.GameObject
+
+
triggers this GameObjects own controller (if set) to update the object.
+
+
updateObjects() - Method in class playground.Playground
+
+
Calls all object update methods in level.
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-18.html b/prog2-codebase/GameProject/doc/index-files/index-18.html new file mode 100644 index 0000000..be9e8a0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-18.html @@ -0,0 +1,66 @@ + + + + +W-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

W

+
+
waitWhilePainting() - Method in class ui.GameUI
+
 
+
writeHSToFile(Integer, Integer) - Static method in class playground.HighscoreManager
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-19.html b/prog2-codebase/GameProject/doc/index-files/index-19.html new file mode 100644 index 0000000..9fc20f8 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-19.html @@ -0,0 +1,66 @@ + + + + +Z-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

Z

+
+
ZickZackController - Class in controller
+
 
+
ZickZackController(double, double) - Constructor for class controller.ZickZackController
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-2.html b/prog2-codebase/GameProject/doc/index-files/index-2.html new file mode 100644 index 0000000..f09c280 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-2.html @@ -0,0 +1,64 @@ + + + + +B-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

B

+
+
base - package base
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-3.html b/prog2-codebase/GameProject/doc/index-files/index-3.html new file mode 100644 index 0000000..c9591fa --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-3.html @@ -0,0 +1,129 @@ + + + + +C-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

C

+
+
checkCollisionCircCirc(Collider) - Method in class collider.CircleCollider
+
+
calculates the collission of this with other collider
+
+
checkCollisionRectCirc(Collider) - Method in class collider.RectCollider
+
+
checks collision with other Collider, which needs to be a CircleCollider
+
+
checkCollisionRectRect(Collider) - Method in class collider.RectCollider
+
+
checks collision with other Collider, which needs to be a RectCollider, too.
+
+
CircleArtist - Class in rendering
+
 
+
CircleArtist(GameObject) - Constructor for class rendering.CircleArtist
+
 
+
CircleArtist(GameObject, double, Color) - Constructor for class rendering.CircleArtist
+
 
+
CircleCollider - Class in collider
+
+
Collider for round objects
+
+
CircleCollider(String, GameObject, double) - Constructor for class collider.CircleCollider
+
+
Constructor which sets the radius to be respected for collisions.
+
+
closeFile() - Method in class playground.HighscoreManager
+
 
+
collectObjects(String, boolean) - Method in class playground.Playground
+
+
Puts objects with a certain substring in their name into a LinkedLisrt and returns them.
+
+
collider - package collider
+
 
+
Collider - Class in collider
+
+
abstract base class for all Colliders to detect collisions between GameObjects
+
+
Collider(String, GameObject) - Constructor for class collider.Collider
+
 
+
collidesWith(Collider) - Method in class collider.CircleCollider
+
 
+
collidesWith(Collider) - Method in class collider.Collider
+
+
checks the collission with another collider instance.
+
+
collidesWith(Collider) - Method in class collider.RectCollider
+
 
+
CollisionAwareEgoController - Class in controller
+
+
An EgoController which cannot move through obstacle objects (is collission aware).
+
+
CollisionAwareEgoController(double) - Constructor for class controller.CollisionAwareEgoController
+
 
+
CollisionAwareEgoController(double, File) - Constructor for class controller.CollisionAwareEgoController
+
 
+
collisionDetection(GameObject) - Method in class gameobjects.GameObject
+
+
Collision detection implemented by iteration through the own list of Collider + and calling their Collider.collidesWith(Collider) method to check collision + with the given parameter instance of other GameObject.
+
+
controller - package controller
+
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-4.html b/prog2-codebase/GameProject/doc/index-files/index-4.html new file mode 100644 index 0000000..211204d --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-4.html @@ -0,0 +1,86 @@ + + + + +D-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

D

+
+
deleteObject(String) - Method in class playground.Playground
+
+
Removes a graphics object from a level.
+
+
deleteObjectNow(String) - Method in class playground.Playground
+
+
Removes a graphics object from a level immediately, CAUTION.
+
+
draw(Graphics2D) - Method in class gameobjects.GameObject
+
+
Draws the object in its current state.
+
+
draw(Graphics2D) - Method in class rendering.AnimationArtist
+
 
+
draw(Graphics2D) - Method in class rendering.Artist
+
 
+
draw(Graphics2D) - Method in class rendering.CircleArtist
+
 
+
draw(Graphics2D) - Method in class rendering.RectArtist
+
 
+
draw(Graphics2D) - Method in class rendering.TextArtist
+
+
Draw the text.
+
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-5.html b/prog2-codebase/GameProject/doc/index-files/index-5.html new file mode 100644 index 0000000..687517f --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-5.html @@ -0,0 +1,87 @@ + + + + +E-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

E

+
+
EgoController - Class in controller
+
+
Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
+
+
EgoController(double) - Constructor for class controller.EgoController
+
+
constructor that gives the ego controller a radius to stop the ego object when it reaches the level boundaries.
+
+
EgoController(double, double) - Constructor for class controller.EgoController
+
+
constructor that gives the ego controller a width and height to stop the ego object when it reaches the level boundaries.
+
+
EgoObject - Class in gameobjects
+
 
+
EgoObject(String, Playground, double, double, double, double, double) - Constructor for class gameobjects.EgoObject
+
 
+
EGOSPEED - Static variable in class playground.SpaceInvadersLevel
+
 
+
EnemyController - Class in controller
+
+
This class controls the space invaders.
+
+
EnemyController() - Constructor for class controller.EnemyController
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-6.html b/prog2-codebase/GameProject/doc/index-files/index-6.html new file mode 100644 index 0000000..2d4833b --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-6.html @@ -0,0 +1,80 @@ + + + + +F-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

F

+
+
FallingStar - Class in gameobjects
+
 
+
FallingStar(String, Playground, double, double, double, double, Color, double) - Constructor for class gameobjects.FallingStar
+
 
+
FallingStarController - Class in controller
+
+
Controls background stars.
+
+
FallingStarController() - Constructor for class controller.FallingStarController
+
 
+
fileList - Variable in class playground.Animation
+
 
+
FLAGS_ALL - Static variable in class playground.Playground
+
 
+
FLAGS_GLOBAL - Static variable in class playground.Playground
+
 
+
FLAGS_LEVEL - Static variable in class playground.Playground
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-7.html b/prog2-codebase/GameProject/doc/index-files/index-7.html new file mode 100644 index 0000000..2d99e63 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-7.html @@ -0,0 +1,250 @@ + + + + +G-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

G

+
+
GameLoop - Class in base
+
+
Main class starting any game, contains main().
+
+
GameLoop() - Constructor for class base.GameLoop
+
+
constructor which calls GameLoop.defineLevels(), which adds all levels of this game.
+
+
GameObject - Class in gameobjects
+
+
The class GameObject represents a (possibly animated) object appearing in a level of the + game.
+
+
GameObject(String, Playground, double, double, double, double) - Constructor for class gameobjects.GameObject
+
+
Constructor to initialize a GameObject, respectively set the current Playground + instance this GameObject belongs to.
+
+
GameObject(String, Playground, ObjectController, double, double, double, double) - Constructor for class gameobjects.GameObject
+
+
Constructor to initialize a GameObject, respectively set the current Playground instance this + GameObject belongs to.
+
+
gameobjects - package gameobjects
+
 
+
gameOver() - Method in class playground.Playground
+
 
+
gameOver() - Method in class playground.SpaceInvadersLevel
+
 
+
GameUI - Class in ui
+
+
creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
+
+
GameUI(int, int) - Constructor for class ui.GameUI
+
+
as typical for GUI classes this constructor creates all the components and adds them to the + frame.
+
+
generateColliders() - Method in class gameobjects.AnimatedGameobject
+
 
+
generateColliders() - Method in class gameobjects.EgoObject
+
 
+
generateColliders() - Method in class gameobjects.GameObject
+
+
generates and sets collider(s) for this GameObject.
+
+
generateColliders() - Method in class gameobjects.RectObject
+
+
generates a new RectCollider with id-prefix "shotcollider_" and registers it for 'this' + [@link RectObject}.
+
+
generateColliders() - Method in class gameobjects.TextObject
+
 
+
getCurrentKey() - Method in class ui.GameUI
+
 
+
getFileList() - Method in class playground.Animation
+
 
+
getGameTime() - Method in class gameobjects.GameObject
+
 
+
getGameTime() - Method in class playground.Playground
+
+
returns time in seconds since level start
+
+
getGameTime() - Method in class rendering.Artist
+
 
+
getGlobalFlag(String) - Static method in class playground.Playground
+
+
Retrieves a level-wide flag by name.
+
+
getH() - Method in class rendering.AnimationArtist
+
 
+
getHeight() - Method in class gameobjects.RectObject
+
+
Getter for the height
+
+
getId() - Method in class collider.Collider
+
+
returns the internal unique name
+
+
getId() - Method in class gameobjects.GameObject
+
+
return the unique object ID.
+
+
getImageList() - Method in class playground.Animation
+
 
+
getKeyEvents() - Method in class playground.Playground
+
 
+
getKeyEvents() - Method in class ui.GameUI
+
 
+
getLevelFlag(String) - Method in class playground.Playground
+
 
+
getMouseEvents() - Method in class playground.Playground
+
 
+
getMouseEvents() - Method in class ui.GameUI
+
 
+
getNewAction() - Static method in class ui.GameUI
+
 
+
getObject(String) - Method in class playground.Playground
+
+
Retrieves a graphics object by name.
+
+
getObjectController() - Method in class gameobjects.GameObject
+
+
Access to object controller.
+
+
getObjectFlag(String) - Method in class gameobjects.GameObject
+
 
+
getOrCreateGlobalFlag(String, Object) - Static method in class playground.Playground
+
+
checks for existence and if not creates the new global flag with the given initial value.
+
+
getOrCreateLevelFlag(String, Object) - Method in class playground.Playground
+
 
+
getOrCreateObjectFlag(String, Object) - Method in class gameobjects.GameObject
+
 
+
getPlayground() - Method in class controller.ObjectController
+
 
+
getPlayground() - Method in class gameobjects.GameObject
+
 
+
getShowtimeList() - Method in class playground.Animation
+
 
+
getSizeX() - Method in class playground.Playground
+
 
+
getSizeY() - Method in class playground.Playground
+
 
+
getText() - Method in class gameobjects.TextObject
+
 
+
getText() - Method in class rendering.TextArtist
+
 
+
getTextHeight() - Method in class rendering.TextArtist
+
 
+
getTextWidth() - Method in class rendering.TextArtist
+
 
+
getTimestep() - Method in class controller.ObjectController
+
 
+
getTimestep() - Method in class playground.Playground
+
 
+
getVX() - Method in class controller.ObjectController
+
 
+
getVX() - Method in class gameobjects.GameObject
+
+
gets the screen X speed in pixels per frame.
+
+
getVX() - Method in class rendering.Artist
+
 
+
getVY() - Method in class controller.ObjectController
+
 
+
getVY() - Method in class gameobjects.GameObject
+
+
gets the screen Y speed in pixels per frame.
+
+
getVY() - Method in class rendering.Artist
+
 
+
getW() - Method in class rendering.AnimationArtist
+
 
+
getWidth() - Method in class gameobjects.RectObject
+
+
Getter for the width
+
+
getX() - Method in class collider.Collider
+
+
returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
+
+
getX() - Method in class controller.ObjectController
+
 
+
getX() - Method in class gameobjects.GameObject
+
+
gets the screen X position.
+
+
getX() - Method in class rendering.Artist
+
 
+
getY() - Method in class collider.Collider
+
+
returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
+
+
getY() - Method in class controller.ObjectController
+
 
+
getY() - Method in class gameobjects.GameObject
+
+
gets the screen Y position.
+
+
getY() - Method in class rendering.Artist
+
 
+
grabFocus() - Method in class ui.GameUI
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-8.html b/prog2-codebase/GameProject/doc/index-files/index-8.html new file mode 100644 index 0000000..1986984 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-8.html @@ -0,0 +1,66 @@ + + + + +H-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

H

+
+
HighscoreManager - Class in playground
+
 
+
HighscoreManager() - Constructor for class playground.HighscoreManager
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index-files/index-9.html b/prog2-codebase/GameProject/doc/index-files/index-9.html new file mode 100644 index 0000000..9ee88e2 --- /dev/null +++ b/prog2-codebase/GameProject/doc/index-files/index-9.html @@ -0,0 +1,76 @@ + + + + +I-Index + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values +

I

+
+
id - Variable in class collider.Collider
+
+
unique internal name for Collider
+
+
id - Variable in class gameobjects.GameObject
+
 
+
imageList - Variable in class playground.Animation
+
 
+
isActive() - Method in class gameobjects.GameObject
+
 
+
isPainting() - Method in class ui.GameUI
+
 
+
isPaused() - Method in class playground.Playground
+
 
+
+A B C D E F G H I L M O P R S T U W Z 
All Classes and Interfaces|All Packages|Constant Field Values
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/index.html b/prog2-codebase/GameProject/doc/index.html new file mode 100644 index 0000000..1a4ef0c --- /dev/null +++ b/prog2-codebase/GameProject/doc/index.html @@ -0,0 +1,79 @@ + + + + +Overview + + + + + + + + + + + + + + + +
+ +
+
+
+
Packages
+
+
Package
+
Description
+ +
 
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/jquery-ui.overrides.css b/prog2-codebase/GameProject/doc/jquery-ui.overrides.css new file mode 100644 index 0000000..1abff95 --- /dev/null +++ b/prog2-codebase/GameProject/doc/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/prog2-codebase/GameProject/doc/legal/COPYRIGHT b/prog2-codebase/GameProject/doc/legal/COPYRIGHT new file mode 100644 index 0000000..ca74fff --- /dev/null +++ b/prog2-codebase/GameProject/doc/legal/COPYRIGHT @@ -0,0 +1 @@ +Please see ..\java.base\COPYRIGHT diff --git a/prog2-codebase/GameProject/doc/legal/LICENSE b/prog2-codebase/GameProject/doc/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/prog2-codebase/GameProject/doc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/prog2-codebase/GameProject/doc/legal/jquery.md b/prog2-codebase/GameProject/doc/legal/jquery.md new file mode 100644 index 0000000..8054a34 --- /dev/null +++ b/prog2-codebase/GameProject/doc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.5.1 + +### jQuery License +``` +jQuery v 3.5.1 +Copyright JS Foundation and other contributors, https://js.foundation/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.5.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/prog2-codebase/GameProject/doc/legal/jqueryUI.md b/prog2-codebase/GameProject/doc/legal/jqueryUI.md new file mode 100644 index 0000000..8031bdb --- /dev/null +++ b/prog2-codebase/GameProject/doc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.12.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/prog2-codebase/GameProject/doc/member-search-index.js b/prog2-codebase/GameProject/doc/member-search-index.js new file mode 100644 index 0000000..e6bdaf0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"ui","c":"GameUI","l":"ACTION_ABOUT"},{"p":"ui","c":"GameUI","l":"ACTION_BUTTON"},{"p":"ui","c":"GameUI","l":"ACTION_LOAD"},{"p":"ui","c":"GameUI","l":"ACTION_NEW"},{"p":"ui","c":"GameUI","l":"ACTION_PAUSE"},{"p":"ui","c":"GameUI","l":"ACTION_QUIT"},{"p":"ui","c":"GameUI","l":"ACTION_RESET"},{"p":"ui","c":"GameUI","l":"ACTION_SAVE"},{"p":"ui","c":"GameUI","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"gameobjects","c":"GameObject","l":"addArtist(Artist)","u":"addArtist(rendering.Artist)"},{"p":"gameobjects","c":"GameObject","l":"addCollider(Collider)","u":"addCollider(collider.Collider)"},{"p":"gameobjects","c":"GameObject","l":"addController(ObjectController)","u":"addController(controller.ObjectController)"},{"p":"playground","c":"Playground","l":"addObject(GameObject)","u":"addObject(gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"addObjectNow(GameObject)","u":"addObjectNow(gameobjects.GameObject)"},{"p":"gameobjects","c":"AnimatedGameobject","l":"AnimatedGameobject(String, Playground, double, double, double, double, double, Animation, double, String)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double,playground.Animation,double,java.lang.String)"},{"p":"playground","c":"Animation","l":"Animation(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"rendering","c":"AnimationArtist","l":"AnimationArtist(GameObject, Animation, double, String, double)","u":"%3Cinit%3E(gameobjects.GameObject,playground.Animation,double,java.lang.String,double)"},{"p":"playground","c":"Playground","l":"applyGameLogic()"},{"p":"playground","c":"SpaceInvadersLevel","l":"applyGameLogic()"},{"p":"controller","c":"ObjectController","l":"applySpeedVector()"},{"p":"collider","c":"CircleCollider","l":"checkCollisionCircCirc(Collider)","u":"checkCollisionCircCirc(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"checkCollisionRectCirc(Collider)","u":"checkCollisionRectCirc(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"checkCollisionRectRect(Collider)","u":"checkCollisionRectRect(collider.Collider)"},{"p":"rendering","c":"CircleArtist","l":"CircleArtist(GameObject)","u":"%3Cinit%3E(gameobjects.GameObject)"},{"p":"rendering","c":"CircleArtist","l":"CircleArtist(GameObject, double, Color)","u":"%3Cinit%3E(gameobjects.GameObject,double,java.awt.Color)"},{"p":"collider","c":"CircleCollider","l":"CircleCollider(String, GameObject, double)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject,double)"},{"p":"playground","c":"HighscoreManager","l":"closeFile()"},{"p":"playground","c":"Playground","l":"collectObjects(String, boolean)","u":"collectObjects(java.lang.String,boolean)"},{"p":"collider","c":"Collider","l":"Collider(String, GameObject)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject)"},{"p":"collider","c":"CircleCollider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"collider","c":"Collider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"controller","c":"CollisionAwareEgoController","l":"CollisionAwareEgoController(double)","u":"%3Cinit%3E(double)"},{"p":"controller","c":"CollisionAwareEgoController","l":"CollisionAwareEgoController(double, File)","u":"%3Cinit%3E(double,java.io.File)"},{"p":"gameobjects","c":"GameObject","l":"collisionDetection(GameObject)","u":"collisionDetection(gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"deleteObject(String)","u":"deleteObject(java.lang.String)"},{"p":"playground","c":"Playground","l":"deleteObjectNow(String)","u":"deleteObjectNow(java.lang.String)"},{"p":"gameobjects","c":"GameObject","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"AnimationArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"Artist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"CircleArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"RectArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"TextArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"controller","c":"EgoController","l":"EgoController(double)","u":"%3Cinit%3E(double)"},{"p":"controller","c":"EgoController","l":"EgoController(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"gameobjects","c":"EgoObject","l":"EgoObject(String, Playground, double, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double)"},{"p":"playground","c":"SpaceInvadersLevel","l":"EGOSPEED"},{"p":"controller","c":"EnemyController","l":"EnemyController()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"FallingStar","l":"FallingStar(String, Playground, double, double, double, double, Color, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,java.awt.Color,double)"},{"p":"controller","c":"FallingStarController","l":"FallingStarController()","u":"%3Cinit%3E()"},{"p":"playground","c":"Animation","l":"fileList"},{"p":"playground","c":"Playground","l":"FLAGS_ALL"},{"p":"playground","c":"Playground","l":"FLAGS_GLOBAL"},{"p":"playground","c":"Playground","l":"FLAGS_LEVEL"},{"p":"base","c":"GameLoop","l":"GameLoop()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"GameObject","l":"GameObject(String, Playground, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double)"},{"p":"gameobjects","c":"GameObject","l":"GameObject(String, Playground, ObjectController, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,controller.ObjectController,double,double,double,double)"},{"p":"playground","c":"Playground","l":"gameOver()"},{"p":"playground","c":"SpaceInvadersLevel","l":"gameOver()"},{"p":"ui","c":"GameUI","l":"GameUI(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"gameobjects","c":"AnimatedGameobject","l":"generateColliders()"},{"p":"gameobjects","c":"EgoObject","l":"generateColliders()"},{"p":"gameobjects","c":"GameObject","l":"generateColliders()"},{"p":"gameobjects","c":"RectObject","l":"generateColliders()"},{"p":"gameobjects","c":"TextObject","l":"generateColliders()"},{"p":"ui","c":"GameUI","l":"getCurrentKey()"},{"p":"playground","c":"Animation","l":"getFileList()"},{"p":"gameobjects","c":"GameObject","l":"getGameTime()"},{"p":"playground","c":"Playground","l":"getGameTime()"},{"p":"rendering","c":"Artist","l":"getGameTime()"},{"p":"playground","c":"Playground","l":"getGlobalFlag(String)","u":"getGlobalFlag(java.lang.String)"},{"p":"rendering","c":"AnimationArtist","l":"getH()"},{"p":"gameobjects","c":"RectObject","l":"getHeight()"},{"p":"collider","c":"Collider","l":"getId()"},{"p":"gameobjects","c":"GameObject","l":"getId()"},{"p":"playground","c":"Animation","l":"getImageList()"},{"p":"playground","c":"Playground","l":"getKeyEvents()"},{"p":"ui","c":"GameUI","l":"getKeyEvents()"},{"p":"playground","c":"Playground","l":"getLevelFlag(String)","u":"getLevelFlag(java.lang.String)"},{"p":"playground","c":"Playground","l":"getMouseEvents()"},{"p":"ui","c":"GameUI","l":"getMouseEvents()"},{"p":"ui","c":"GameUI","l":"getNewAction()"},{"p":"playground","c":"Playground","l":"getObject(String)","u":"getObject(java.lang.String)"},{"p":"gameobjects","c":"GameObject","l":"getObjectController()"},{"p":"gameobjects","c":"GameObject","l":"getObjectFlag(String)","u":"getObjectFlag(java.lang.String)"},{"p":"playground","c":"Playground","l":"getOrCreateGlobalFlag(String, Object)","u":"getOrCreateGlobalFlag(java.lang.String,java.lang.Object)"},{"p":"playground","c":"Playground","l":"getOrCreateLevelFlag(String, Object)","u":"getOrCreateLevelFlag(java.lang.String,java.lang.Object)"},{"p":"gameobjects","c":"GameObject","l":"getOrCreateObjectFlag(String, Object)","u":"getOrCreateObjectFlag(java.lang.String,java.lang.Object)"},{"p":"controller","c":"ObjectController","l":"getPlayground()"},{"p":"gameobjects","c":"GameObject","l":"getPlayground()"},{"p":"playground","c":"Animation","l":"getShowtimeList()"},{"p":"playground","c":"Playground","l":"getSizeX()"},{"p":"playground","c":"Playground","l":"getSizeY()"},{"p":"gameobjects","c":"TextObject","l":"getText()"},{"p":"rendering","c":"TextArtist","l":"getText()"},{"p":"rendering","c":"TextArtist","l":"getTextHeight()"},{"p":"rendering","c":"TextArtist","l":"getTextWidth()"},{"p":"controller","c":"ObjectController","l":"getTimestep()"},{"p":"playground","c":"Playground","l":"getTimestep()"},{"p":"controller","c":"ObjectController","l":"getVX()"},{"p":"gameobjects","c":"GameObject","l":"getVX()"},{"p":"rendering","c":"Artist","l":"getVX()"},{"p":"controller","c":"ObjectController","l":"getVY()"},{"p":"gameobjects","c":"GameObject","l":"getVY()"},{"p":"rendering","c":"Artist","l":"getVY()"},{"p":"rendering","c":"AnimationArtist","l":"getW()"},{"p":"gameobjects","c":"RectObject","l":"getWidth()"},{"p":"collider","c":"Collider","l":"getX()"},{"p":"controller","c":"ObjectController","l":"getX()"},{"p":"gameobjects","c":"GameObject","l":"getX()"},{"p":"rendering","c":"Artist","l":"getX()"},{"p":"collider","c":"Collider","l":"getY()"},{"p":"controller","c":"ObjectController","l":"getY()"},{"p":"gameobjects","c":"GameObject","l":"getY()"},{"p":"rendering","c":"Artist","l":"getY()"},{"p":"ui","c":"GameUI","l":"grabFocus()"},{"p":"playground","c":"HighscoreManager","l":"HighscoreManager()","u":"%3Cinit%3E()"},{"p":"collider","c":"Collider","l":"id"},{"p":"gameobjects","c":"GameObject","l":"id"},{"p":"playground","c":"Animation","l":"imageList"},{"p":"gameobjects","c":"GameObject","l":"isActive()"},{"p":"ui","c":"GameUI","l":"isPainting()"},{"p":"playground","c":"Playground","l":"isPaused()"},{"p":"playground","c":"Level1","l":"Level1()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level2","l":"Level2()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level3","l":"Level3()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level4","l":"Level4()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level5","l":"Level5()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level6","l":"Level6()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level7","l":"Level7()","u":"%3Cinit%3E()"},{"p":"playground","c":"LevelBoss","l":"LevelBoss()","u":"%3Cinit%3E()"},{"p":"playground","c":"Playground","l":"levelFinished()"},{"p":"playground","c":"SpaceInvadersLevel","l":"levelFinished()"},{"p":"playground","c":"LevelHitTwice","l":"LevelHitTwice()","u":"%3Cinit%3E()"},{"p":"playground","c":"LevelWithBox","l":"LevelWithBox()","u":"%3Cinit%3E()"},{"p":"controller","c":"LimitedTimeController","l":"LimitedTimeController(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"base","c":"GameLoop","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"base","c":"MultiLevelGame","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"gameobjects","c":"GameObject","l":"MASK"},{"p":"playground","c":"Level4","l":"MAX_HITS"},{"p":"playground","c":"LevelHitTwice","l":"MAX_HITS"},{"p":"controller","c":"MineController","l":"MineController(double)","u":"%3Cinit%3E(double)"},{"p":"base","c":"MultiLevelGame","l":"MultiLevelGame()","u":"%3Cinit%3E()"},{"p":"playground","c":"Music","l":"Music()","u":"%3Cinit%3E()"},{"p":"playground","c":"Music","l":"music(File)","u":"music(java.io.File)"},{"p":"controller","c":"ObjectController","l":"ObjectController()","u":"%3Cinit%3E()"},{"p":"controller","c":"EgoController","l":"onDown(KeyEvent, GameObject)","u":"onDown(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onLeft(KeyEvent, GameObject)","u":"onLeft(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onRight(KeyEvent, GameObject)","u":"onRight(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"CollisionAwareEgoController","l":"onSpace(KeyEvent, GameObject)","u":"onSpace(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onSpace(KeyEvent, GameObject)","u":"onSpace(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onStop(KeyEvent, GameObject)","u":"onStop(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onUp(KeyEvent, GameObject)","u":"onUp(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"Playground()","u":"%3Cinit%3E()"},{"p":"playground","c":"Playground","l":"preferredSizeX()"},{"p":"playground","c":"SpaceInvadersLevel","l":"preferredSizeX()"},{"p":"playground","c":"Playground","l":"preferredSizeY()"},{"p":"playground","c":"SpaceInvadersLevel","l":"preferredSizeY()"},{"p":"playground","c":"Playground","l":"prepareLevel(String)","u":"prepareLevel(java.lang.String)"},{"p":"playground","c":"SpaceInvadersLevel","l":"prepareLevel(String)","u":"prepareLevel(java.lang.String)"},{"p":"playground","c":"Playground","l":"processKeyEvents(Stack)","u":"processKeyEvents(java.util.Stack)"},{"p":"playground","c":"Playground","l":"processMouseEvents(Stack)","u":"processMouseEvents(java.util.Stack)"},{"p":"gameobjects","c":"GameObject","l":"RADIUS"},{"p":"playground","c":"HighscoreManager","l":"readHSFromFile()"},{"p":"gameobjects","c":"GameObject","l":"RECTANGLE"},{"p":"rendering","c":"RectArtist","l":"RectArtist(GameObject, double, double, Color)","u":"%3Cinit%3E(gameobjects.GameObject,double,double,java.awt.Color)"},{"p":"collider","c":"RectCollider","l":"RectCollider(String, GameObject, double, double)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject,double,double)"},{"p":"gameobjects","c":"RectObject","l":"RectObject(String, Playground, double, double, double, double, double, double, Color)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double,double,java.awt.Color)"},{"p":"playground","c":"Playground","l":"redraw(Graphics2D)","u":"redraw(java.awt.Graphics2D)"},{"p":"playground","c":"Playground","l":"redrawLevel(Graphics2D)","u":"redrawLevel(java.awt.Graphics2D)"},{"p":"playground","c":"SpaceInvadersLevel","l":"redrawLevel(Graphics2D)","u":"redrawLevel(java.awt.Graphics2D)"},{"p":"ui","c":"GameUI","l":"repaint()"},{"p":"playground","c":"Playground","l":"reset()"},{"p":"ui","c":"GameUI","l":"resetAction()"},{"p":"playground","c":"Playground","l":"resetFlags(int)"},{"p":"controller","c":"CollisionAwareEgoController","l":"restoreDynamicState()"},{"p":"base","c":"GameLoop","l":"runGame(String[])","u":"runGame(java.lang.String[])"},{"p":"playground","c":"SaveGame","l":"save()"},{"p":"controller","c":"CollisionAwareEgoController","l":"saveDynamicState()"},{"p":"playground","c":"SaveGame","l":"SaveGame()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"GameObject","l":"scol"},{"p":"gameobjects","c":"GameObject","l":"setActive(boolean)"},{"p":"gameobjects","c":"GameObject","l":"setColliders(LinkedList)","u":"setColliders(java.util.LinkedList)"},{"p":"gameobjects","c":"GameObject","l":"setComponentProperty(String, String, Object)","u":"setComponentProperty(java.lang.String,java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setController(ObjectController)","u":"setController(controller.ObjectController)"},{"p":"controller","c":"ObjectController","l":"setDummy(String)","u":"setDummy(java.lang.String)"},{"p":"playground","c":"Playground","l":"setGameTime(double)"},{"p":"playground","c":"Playground","l":"setGlobalFlag(String, Object)","u":"setGlobalFlag(java.lang.String,java.lang.Object)"},{"p":"playground","c":"Playground","l":"setLevelFlag(String, Object)","u":"setLevelFlag(java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setObject(GameObject)","u":"setObject(gameobjects.GameObject)"},{"p":"controller","c":"ObjectController","l":"setObject(GameObject)","u":"setObject(gameobjects.GameObject)"},{"p":"gameobjects","c":"GameObject","l":"setObjectController(ObjectController)","u":"setObjectController(controller.ObjectController)"},{"p":"gameobjects","c":"GameObject","l":"setObjectFlag(String, Object)","u":"setObjectFlag(java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setOffsets(double, double)","u":"setOffsets(double,double)"},{"p":"ui","c":"GameUI","l":"setPainting()"},{"p":"playground","c":"Playground","l":"setPaused(boolean)"},{"p":"collider","c":"Collider","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"controller","c":"ObjectController","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"gameobjects","c":"GameObject","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"ui","c":"GameUI","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"gameobjects","c":"TextObject","l":"setText(String)","u":"setText(java.lang.String)"},{"p":"rendering","c":"TextArtist","l":"setText(String)","u":"setText(java.lang.String)"},{"p":"rendering","c":"TextArtist","l":"setTextHeight(double)"},{"p":"rendering","c":"TextArtist","l":"setTextWidth(double)"},{"p":"playground","c":"Playground","l":"setTimestep(double)"},{"p":"controller","c":"ObjectController","l":"setVX(double)"},{"p":"gameobjects","c":"GameObject","l":"setVX(double)"},{"p":"controller","c":"ObjectController","l":"setVY(double)"},{"p":"gameobjects","c":"GameObject","l":"setVY(double)"},{"p":"controller","c":"ObjectController","l":"setX(double)"},{"p":"gameobjects","c":"GameObject","l":"setX(double)"},{"p":"controller","c":"ObjectController","l":"setY(double)"},{"p":"gameobjects","c":"GameObject","l":"setY(double)"},{"p":"playground","c":"SpaceInvadersLevel","l":"SHOTSPEED"},{"p":"playground","c":"Animation","l":"showtimeList"},{"p":"controller","c":"SimpleShotController","l":"SimpleShotController()","u":"%3Cinit%3E()"},{"p":"base","c":"GameLoop","l":"SIZEX"},{"p":"base","c":"GameLoop","l":"SIZEY"},{"p":"playground","c":"SpaceInvadersLevel","l":"SpaceInvadersLevel()","u":"%3Cinit%3E()"},{"p":"controller","c":"CollisionAwareEgoController","l":"stopObject()"},{"p":"controller","c":"EgoController","l":"stopObject()"},{"p":"rendering","c":"TextArtist","l":"TextArtist(GameObject, String, int, Color)","u":"%3Cinit%3E(gameobjects.GameObject,java.lang.String,int,java.awt.Color)"},{"p":"gameobjects","c":"TextObject","l":"TextObject(String, Playground, double, double, double, double, String, int, Color)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,java.lang.String,int,java.awt.Color)"},{"p":"playground","c":"Playground","l":"togglePause()"},{"p":"collider","c":"CircleCollider","l":"toString()"},{"p":"collider","c":"Collider","l":"toString()"},{"p":"collider","c":"RectCollider","l":"toString()"},{"p":"controller","c":"EgoController","l":"updateObject()"},{"p":"controller","c":"EnemyController","l":"updateObject()"},{"p":"controller","c":"FallingStarController","l":"updateObject()"},{"p":"controller","c":"LimitedTimeController","l":"updateObject()"},{"p":"controller","c":"MineController","l":"updateObject()"},{"p":"controller","c":"ObjectController","l":"updateObject()"},{"p":"controller","c":"SimpleShotController","l":"updateObject()"},{"p":"controller","c":"ZickZackController","l":"updateObject()"},{"p":"gameobjects","c":"GameObject","l":"updateObject()"},{"p":"playground","c":"Playground","l":"updateObjects()"},{"p":"ui","c":"GameUI","l":"waitWhilePainting()"},{"p":"playground","c":"HighscoreManager","l":"writeHSToFile(Integer, Integer)","u":"writeHSToFile(java.lang.Integer,java.lang.Integer)"},{"p":"controller","c":"ZickZackController","l":"ZickZackController(double, double)","u":"%3Cinit%3E(double,double)"}];updateSearchResults(); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/module-search-index.js b/prog2-codebase/GameProject/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/prog2-codebase/GameProject/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/overview-summary.html b/prog2-codebase/GameProject/doc/overview-summary.html new file mode 100644 index 0000000..2695f91 --- /dev/null +++ b/prog2-codebase/GameProject/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/prog2-codebase/GameProject/doc/overview-tree.html b/prog2-codebase/GameProject/doc/overview-tree.html new file mode 100644 index 0000000..a1aad86 --- /dev/null +++ b/prog2-codebase/GameProject/doc/overview-tree.html @@ -0,0 +1,146 @@ + + + + +Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/package-search-index.js b/prog2-codebase/GameProject/doc/package-search-index.js new file mode 100644 index 0000000..f6dca23 --- /dev/null +++ b/prog2-codebase/GameProject/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"base"},{"l":"collider"},{"l":"controller"},{"l":"gameobjects"},{"l":"playground"},{"l":"rendering"},{"l":"ui"}];updateSearchResults(); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/playground/Animation.html b/prog2-codebase/GameProject/doc/playground/Animation.html new file mode 100644 index 0000000..4b24d4e --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Animation.html @@ -0,0 +1,224 @@ + + + + +Animation + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Animation

+
+
java.lang.Object +
playground.Animation
+
+
+
+
public class Animation +extends Object
+
+
+ +
+
+ +
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/HighscoreManager.html b/prog2-codebase/GameProject/doc/playground/HighscoreManager.html new file mode 100644 index 0000000..8603768 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/HighscoreManager.html @@ -0,0 +1,179 @@ + + + + +HighscoreManager + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class HighscoreManager

+
+
java.lang.Object +
playground.HighscoreManager
+
+
+
+
public class HighscoreManager +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      HighscoreManager

      +
      public HighscoreManager()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      readHSFromFile

      +
      public int readHSFromFile()
      +
      +
    • +
    • +
      +

      writeHSToFile

      +
      public static void writeHSToFile(Integer pts, + Integer highscore)
      +
      +
    • +
    • +
      +

      closeFile

      +
      public void closeFile()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level1.html b/prog2-codebase/GameProject/doc/playground/Level1.html new file mode 100644 index 0000000..68c9ce8 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level1.html @@ -0,0 +1,151 @@ + + + + +Level1 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level1

+
+ +
+
+
public class Level1 +extends SpaceInvadersLevel
+
extends SpaceInvadersLevel with a boring start message
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level1

      +
      public Level1()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level2.html b/prog2-codebase/GameProject/doc/playground/Level2.html new file mode 100644 index 0000000..77b9ae0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level2.html @@ -0,0 +1,151 @@ + + + + +Level2 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level2

+
+ +
+
+
public class Level2 +extends SpaceInvadersLevel
+
extends extends SpaceInvadersLevel with a different startup message.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level2

      +
      public Level2()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level3.html b/prog2-codebase/GameProject/doc/playground/Level3.html new file mode 100644 index 0000000..ed2a2f1 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level3.html @@ -0,0 +1,153 @@ + + + + +Level3 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level3

+
+ +
+
+
public class Level3 +extends SpaceInvadersLevel
+
extends SpaceInvadersLevel with a ZigZack move of the enemies in + createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different getStartupMessage().
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level3

      +
      public Level3()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level4.html b/prog2-codebase/GameProject/doc/playground/Level4.html new file mode 100644 index 0000000..6808cf5 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level4.html @@ -0,0 +1,189 @@ + + + + +Level4 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level4

+
+ +
+
+
public class Level4 +extends SpaceInvadersLevel
+
extends extends SpaceInvadersLevel +
    +
  • Hit aliens twice to kill them +
  • they say AUA when not destroyed +
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      MAX_HITS

      +
      public static final int MAX_HITS
      +
      constant defining the number of shots needed to destroy an enemy
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level4

      +
      public Level4()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level5.html b/prog2-codebase/GameProject/doc/playground/Level5.html new file mode 100644 index 0000000..69c8bfa --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level5.html @@ -0,0 +1,150 @@ + + + + +Level5 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level5

+
+ +
+
+
public class Level5 +extends SpaceInvadersLevel
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level5

      +
      public Level5()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level6.html b/prog2-codebase/GameProject/doc/playground/Level6.html new file mode 100644 index 0000000..4a5a3f7 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level6.html @@ -0,0 +1,150 @@ + + + + +Level6 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level6

+
+ +
+
+
public class Level6 +extends SpaceInvadersLevel
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level6

      +
      public Level6()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Level7.html b/prog2-codebase/GameProject/doc/playground/Level7.html new file mode 100644 index 0000000..fa00eec --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Level7.html @@ -0,0 +1,150 @@ + + + + +Level7 + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Level7

+
+ +
+
+
public class Level7 +extends SpaceInvadersLevel
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Level7

      +
      public Level7()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/LevelBoss.html b/prog2-codebase/GameProject/doc/playground/LevelBoss.html new file mode 100644 index 0000000..f827bfe --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/LevelBoss.html @@ -0,0 +1,159 @@ + + + + +LevelBoss + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class LevelBoss

+
+ +
+
+
public class LevelBoss +extends SpaceInvadersLevel
+
Class that realizes all the game logic of a very simple game level. The level contains for now + only two objects that are GameObject subclasses: FallingStar and + EgoObject. Functions performed by this class are: +
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      LevelBoss

      +
      public LevelBoss()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/LevelHitTwice.html b/prog2-codebase/GameProject/doc/playground/LevelHitTwice.html new file mode 100644 index 0000000..0012fd9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/LevelHitTwice.html @@ -0,0 +1,188 @@ + + + + +LevelHitTwice + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class LevelHitTwice

+
+ +
+
+
public class LevelHitTwice +extends SpaceInvadersLevel
+
extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      MAX_HITS

      +
      public static final int MAX_HITS
      +
      constant defining the number of shots needed to destroy an enemy
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      LevelHitTwice

      +
      public LevelHitTwice()
      +
      constructor setting internal name to 'hitTwice'
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/LevelWithBox.html b/prog2-codebase/GameProject/doc/playground/LevelWithBox.html new file mode 100644 index 0000000..55c2082 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/LevelWithBox.html @@ -0,0 +1,150 @@ + + + + +LevelWithBox + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class LevelWithBox

+
+ +
+
+
public class LevelWithBox +extends SpaceInvadersLevel
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      LevelWithBox

      +
      public LevelWithBox()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Music.html b/prog2-codebase/GameProject/doc/playground/Music.html new file mode 100644 index 0000000..72257a4 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Music.html @@ -0,0 +1,159 @@ + + + + +Music + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Music

+
+
java.lang.Object +
playground.Music
+
+
+
+
public class Music +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Music

      +
      public Music()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      music

      +
      public static void music(File track)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/Playground.html b/prog2-codebase/GameProject/doc/playground/Playground.html new file mode 100644 index 0000000..403e5bc --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/Playground.html @@ -0,0 +1,708 @@ + + + + +Playground + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class Playground

+
+
java.lang.Object +
playground.Playground
+
+
+
+
Direct Known Subclasses:
+
SpaceInvadersLevel
+
+
+
public abstract class Playground +extends Object
+
Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation. In particular, an instance of Playground +
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      FLAGS_GLOBAL

      +
      public static final int FLAGS_GLOBAL
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      FLAGS_LEVEL

      +
      public static final int FLAGS_LEVEL
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      FLAGS_ALL

      +
      public static final int FLAGS_ALL
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Playground

      +
      public Playground()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      preferredSizeX

      +
      public abstract int preferredSizeX()
      +
      +
    • +
    • +
      +

      preferredSizeY

      +
      public abstract int preferredSizeY()
      +
      +
    • +
    • +
      +

      addObject

      +
      public void addObject(GameObject o)
      +
      Adds a graphics object to a level.
      +
      +
      Parameters:
      +
      o - GameObject The object to be added
      +
      +
      +
    • +
    • +
      +

      addObjectNow

      +
      public void addObjectNow(GameObject o)
      +
      Adds a graphics object to a level.
      +
      +
      Parameters:
      +
      o - GameObject The object to be added
      +
      +
      +
    • +
    • +
      +

      collectObjects

      +
      public LinkedList<GameObject> collectObjects(String substr, + boolean filterInactive)
      +
      Puts objects with a certain substring in their name into a LinkedLisrt and returns them.
      +
      +
      Parameters:
      +
      substr - The string that must be part of the object name if object is to be considered + found.
      +
      filterInactive - if set true only active objects are considered.
      +
      Returns:
      +
      a reference to a LinkedList filled with all objects that have substr in their + name
      +
      +
      +
    • +
    • +
      +

      deleteObject

      +
      public void deleteObject(String id)
      +
      Removes a graphics object from a level.
      +
      +
      Parameters:
      +
      id - String The unique identifier of the object
      +
      +
      +
    • +
    • +
      +

      deleteObjectNow

      +
      public void deleteObjectNow(String id)
      +
      Removes a graphics object from a level immediately, CAUTION.
      +
      +
      Parameters:
      +
      id - String The unique identifier of the object
      +
      +
      +
    • +
    • +
      +

      getObject

      +
      public GameObject getObject(String id)
      +
      Retrieves a graphics object by name.
      +
      +
      Parameters:
      +
      id - String Unique id of the object
      +
      Returns:
      +
      reference to the requested game object, or null if not found
      +
      +
      +
    • +
    • +
      +

      setGlobalFlag

      +
      public static void setGlobalFlag(String flag, + Object value)
      +
      Sets a level-wide permanent flag.
      +
      +
      Parameters:
      +
      flag - String Q unique name in this level. If it exists value is overwritten.
      +
      value - Object Any Object can be the value of a flag!
      +
      +
      +
    • +
    • +
      +

      setLevelFlag

      +
      public Object setLevelFlag(String flag, + Object value)
      +
      +
    • +
    • +
      +

      resetFlags

      +
      public void resetFlags(int mode)
      +
      mode can be: FLAGS_ALL (all), FLAGS_GLOBAL(global), FLAGs_LEVEL(level)
      +
      +
      Parameters:
      +
      mode - can be only one of FLAGS_GLOBAL FLAGS_ALL or + FLAGS_LEVEL
      +
      +
      +
    • +
    • +
      +

      getGlobalFlag

      +
      public static Object getGlobalFlag(String flag)
      +
      Retrieves a level-wide flag by name.
      +
      +
      Parameters:
      +
      flag - String Unique flag id
      +
      Returns:
      +
      the value associated with flag, or null if the flag does not exist.
      +
      +
      +
    • +
    • +
      +

      getOrCreateGlobalFlag

      +
      public static Object getOrCreateGlobalFlag(String flag, + Object value)
      +
      checks for existence and if not creates the new global flag with the given initial value. Returns the value. + afterwards it is guaranteed that no priorly existing value is overridden and that it definitely exists (created if not present before).
      +
      +
      Parameters:
      +
      flag - String name for the global flag (created if not present)
      +
      value - Object value to be stored (used only if flag was not present)
      +
      Returns:
      +
      the current value of the flag (maybe the initial one in case flag was not there before)
      +
      +
      +
    • +
    • +
      +

      getLevelFlag

      +
      public Object getLevelFlag(String flag)
      +
      +
    • +
    • +
      +

      getOrCreateLevelFlag

      +
      public Object getOrCreateLevelFlag(String flag, + Object createValue)
      +
      +
    • +
    • +
      +

      reset

      +
      public void reset()
      +
      Reinitializes the level.
      +
      +
    • +
    • +
      +

      isPaused

      +
      public boolean isPaused()
      +
      +
    • +
    • +
      +

      setPaused

      +
      public void setPaused(boolean p)
      +
      +
    • +
    • +
      +

      togglePause

      +
      public void togglePause()
      +
      +
    • +
    • +
      +

      processKeyEvents

      +
      public void processKeyEvents(Stack<KeyEvent> keyEvents)
      +
      Method meant to be filled with own code, processes Keyboard inputs.
      +
      +
      Parameters:
      +
      keyEvents - all collected KeyEvents collected since last game loop.
      +
      +
      +
    • +
    • +
      +

      processMouseEvents

      +
      public void processMouseEvents(Stack<MouseEvent> mouseEvents)
      +
      +
    • +
    • +
      +

      getKeyEvents

      +
      public Stack<KeyEvent> getKeyEvents()
      +
      +
    • +
    • +
      +

      getMouseEvents

      +
      public Stack<MouseEvent> getMouseEvents()
      +
      +
    • +
    • +
      +

      applyGameLogic

      +
      public abstract void applyGameLogic()
      +
      Method meant to be filled with own code, handles the entore game logic (collision checks, timed + events, ...).
      +
      +
    • +
    • +
      +

      prepareLevel

      +
      public abstract void prepareLevel(String level)
      +
      Sets up a single level. Prepares all objects etc.
      +
      +
      Parameters:
      +
      level - String a string identifying the level number etc
      +
      +
      +
    • +
    • +
      +

      gameOver

      +
      public abstract boolean gameOver()
      +
      +
    • +
    • +
      +

      levelFinished

      +
      public abstract boolean levelFinished()
      +
      +
    • +
    • +
      +

      getSizeX

      +
      public int getSizeX()
      +
      +
    • +
    • +
      +

      getSizeY

      +
      public int getSizeY()
      +
      +
    • +
    • +
      +

      updateObjects

      +
      public void updateObjects()
      +
      Calls all object update methods in level. Internal, never call directly.
      +
      +
    • +
    • +
      +

      setTimestep

      +
      public void setTimestep(double s)
      +
      +
    • +
    • +
      +

      getTimestep

      +
      public double getTimestep()
      +
      +
    • +
    • +
      +

      setGameTime

      +
      public void setGameTime(double s)
      +
      set the game time value (in seconds)
      +
      +
      Parameters:
      +
      s - seconds the game is running
      +
      +
      +
    • +
    • +
      +

      getGameTime

      +
      public double getGameTime()
      +
      returns time in seconds since level start
      +
      +
    • +
    • +
      +

      redrawLevel

      +
      public abstract void redrawLevel(Graphics2D g2)
      +
      To be redefined!! Draws mainly h level background and global information like points etc.
      +
      +
      Parameters:
      +
      g2 - Graphics2D abstract drawing object of java Swing, used to carry out all drawing + operations.
      +
      +
      +
    • +
    • +
      +

      redraw

      +
      public void redraw(Graphics2D g2)
      +
      Internal, do not call directly.
      +
      +
      Parameters:
      +
      g2 - Graphics2D abstract drawing object of java Swing, used to carry out all drawing + operations.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/SaveGame.html b/prog2-codebase/GameProject/doc/playground/SaveGame.html new file mode 100644 index 0000000..da7c0e9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/SaveGame.html @@ -0,0 +1,159 @@ + + + + +SaveGame + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class SaveGame

+
+
java.lang.Object +
playground.SaveGame
+
+
+
+
public class SaveGame +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SaveGame

      +
      public SaveGame()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      save

      +
      public static void save()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/SpaceInvadersLevel.html b/prog2-codebase/GameProject/doc/playground/SpaceInvadersLevel.html new file mode 100644 index 0000000..01312de --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/SpaceInvadersLevel.html @@ -0,0 +1,341 @@ + + + + +SpaceInvadersLevel + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package playground
+

Class SpaceInvadersLevel

+
+
java.lang.Object +
playground.Playground +
playground.SpaceInvadersLevel
+
+
+
+
+
Direct Known Subclasses:
+
Level1, Level2, Level3, Level4, Level5, Level6, Level7, LevelBoss, LevelHitTwice, LevelWithBox
+
+
+
public class SpaceInvadersLevel +extends Playground
+
Class that realizes all the game logic of a very simple game level. The level contains for now + only two objects that are GameObject subclasses: FallingStar and + EgoObject. Functions performed by this class are: +
    +
  • initially set up the level, spawn all object etc., in method prepareLevel(java.lang.String) +
  • React to game events in actionIfEgoCollidesWithCollect(GameObject, GameObject) , + actionIfEgoCollidesWithEnemy(GameObject, GameObject), etc. +
  • define basic object movement rules for all objects in the level in the various + ObjectController subclasses: EgoController and FallingStarController. +
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      SHOTSPEED

      +
      public static final double SHOTSPEED
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    • +
      +

      EGOSPEED

      +
      public static final double EGOSPEED
      +
      +
      See Also:
      +
      + +
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      SpaceInvadersLevel

      +
      public SpaceInvadersLevel()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      prepareLevel

      +
      public void prepareLevel(String id)
      +
      initially sets up the level. Not called by user interaction, but called every time a layer is + restarted from scratch. So make sure that this is possible. Here, resources are loaded only + once even if method is called several times.
      +
      +
      Specified by:
      +
      prepareLevel in class Playground
      +
      Parameters:
      +
      id - String identifies level.
      +
      +
      +
    • +
    • +
      +

      redrawLevel

      +
      public void redrawLevel(Graphics2D g2)
      +
      (re)draws the level but NOT the objects, they draw themselves. Called by the main game loop. + This method mainly draws the background and the scoreboard.
      +
      +
      Specified by:
      +
      redrawLevel in class Playground
      +
      Parameters:
      +
      g2 - Graphics2D object that can, and should be, draw on.
      +
      +
      +
    • +
    • +
      +

      applyGameLogic

      +
      public void applyGameLogic()
      +
      applies the logic of the level: For now, this is just about deleting shots that are leaving the + screen and calling methods 'actionIf..' in case objects collide.
      +
      +
      Specified by:
      +
      applyGameLogic in class Playground
      +
      +
      +
    • +
    • +
      +

      gameOver

      +
      public boolean gameOver()
      +
      +
      Specified by:
      +
      gameOver in class Playground
      +
      +
      +
    • +
    • +
      +

      levelFinished

      +
      public boolean levelFinished()
      +
      +
      Specified by:
      +
      levelFinished in class Playground
      +
      +
      +
    • +
    • +
      +

      preferredSizeX

      +
      public int preferredSizeX()
      +
      calculates and returns the preferred size of the level (in pixel) for X-direction
      +
      +
      Specified by:
      +
      preferredSizeX in class Playground
      +
      +
      +
    • +
    • +
      +

      preferredSizeY

      +
      public int preferredSizeY()
      +
      calculates and returns the preferred size of the level (in pixel) for Y-direction
      +
      +
      Specified by:
      +
      preferredSizeY in class Playground
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Animation.html b/prog2-codebase/GameProject/doc/playground/class-use/Animation.html new file mode 100644 index 0000000..ecc0437 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Animation.html @@ -0,0 +1,112 @@ + + + + +Uses of Class playground.Animation + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Animation

+
+
Packages that use Animation
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/HighscoreManager.html b/prog2-codebase/GameProject/doc/playground/class-use/HighscoreManager.html new file mode 100644 index 0000000..d75aac4 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/HighscoreManager.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.HighscoreManager + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.HighscoreManager

+
+No usage of playground.HighscoreManager
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level1.html b/prog2-codebase/GameProject/doc/playground/class-use/Level1.html new file mode 100644 index 0000000..a7dd5c6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level1.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level1 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level1

+
+No usage of playground.Level1
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level2.html b/prog2-codebase/GameProject/doc/playground/class-use/Level2.html new file mode 100644 index 0000000..f72fc8f --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level2.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level2 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level2

+
+No usage of playground.Level2
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level3.html b/prog2-codebase/GameProject/doc/playground/class-use/Level3.html new file mode 100644 index 0000000..0701b94 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level3.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level3 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level3

+
+No usage of playground.Level3
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level4.html b/prog2-codebase/GameProject/doc/playground/class-use/Level4.html new file mode 100644 index 0000000..ca1aeb9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level4.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level4 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level4

+
+No usage of playground.Level4
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level5.html b/prog2-codebase/GameProject/doc/playground/class-use/Level5.html new file mode 100644 index 0000000..f22a1e7 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level5.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level5 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level5

+
+No usage of playground.Level5
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level6.html b/prog2-codebase/GameProject/doc/playground/class-use/Level6.html new file mode 100644 index 0000000..1c39b21 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level6.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level6 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level6

+
+No usage of playground.Level6
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Level7.html b/prog2-codebase/GameProject/doc/playground/class-use/Level7.html new file mode 100644 index 0000000..ae31ec9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Level7.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level7 + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Level7

+
+No usage of playground.Level7
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/LevelBoss.html b/prog2-codebase/GameProject/doc/playground/class-use/LevelBoss.html new file mode 100644 index 0000000..87fbc9e --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/LevelBoss.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelBoss + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.LevelBoss

+
+No usage of playground.LevelBoss
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/LevelHitTwice.html b/prog2-codebase/GameProject/doc/playground/class-use/LevelHitTwice.html new file mode 100644 index 0000000..8f2de74 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/LevelHitTwice.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelHitTwice + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.LevelHitTwice

+
+No usage of playground.LevelHitTwice
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/LevelWithBox.html b/prog2-codebase/GameProject/doc/playground/class-use/LevelWithBox.html new file mode 100644 index 0000000..15c4ab8 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/LevelWithBox.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelWithBox + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.LevelWithBox

+
+No usage of playground.LevelWithBox
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Music.html b/prog2-codebase/GameProject/doc/playground/class-use/Music.html new file mode 100644 index 0000000..91cd361 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Music.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Music + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Music

+
+No usage of playground.Music
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/Playground.html b/prog2-codebase/GameProject/doc/playground/class-use/Playground.html new file mode 100644 index 0000000..90a0191 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/Playground.html @@ -0,0 +1,306 @@ + + + + +Uses of Class playground.Playground + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.Playground

+
+
Packages that use Playground
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/SaveGame.html b/prog2-codebase/GameProject/doc/playground/class-use/SaveGame.html new file mode 100644 index 0000000..482ed63 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/SaveGame.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.SaveGame + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.SaveGame

+
+No usage of playground.SaveGame
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/class-use/SpaceInvadersLevel.html b/prog2-codebase/GameProject/doc/playground/class-use/SpaceInvadersLevel.html new file mode 100644 index 0000000..06fba4a --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/class-use/SpaceInvadersLevel.html @@ -0,0 +1,128 @@ + + + + +Uses of Class playground.SpaceInvadersLevel + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
playground.SpaceInvadersLevel

+
+
Packages that use SpaceInvadersLevel
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/package-summary.html b/prog2-codebase/GameProject/doc/playground/package-summary.html new file mode 100644 index 0000000..80fa6e4 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/package-summary.html @@ -0,0 +1,136 @@ + + + + +playground + + + + + + + + + + + + + + + +
+ +
+
+
+

Package playground

+
+
+
package playground
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/package-tree.html b/prog2-codebase/GameProject/doc/playground/package-tree.html new file mode 100644 index 0000000..61405e7 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/package-tree.html @@ -0,0 +1,93 @@ + + + + +playground Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package playground

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/playground/package-use.html b/prog2-codebase/GameProject/doc/playground/package-use.html new file mode 100644 index 0000000..6c0e2a0 --- /dev/null +++ b/prog2-codebase/GameProject/doc/playground/package-use.html @@ -0,0 +1,169 @@ + + + + +Uses of Package playground + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
playground

+
+
Packages that use playground
+
+
Package
+
Description
+ +
 
+ +
+
The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
+
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
    +
  • +
    +
    Classes in playground used by collider
    +
    +
    Class
    +
    Description
    + +
    +
    Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in playground used by controller
    +
    +
    Class
    +
    Description
    + +
    +
    Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in playground used by gameobjects
    +
    +
    Class
    +
    Description
    + +
     
    + +
    +
    Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in playground used by playground
    +
    +
    Class
    +
    Description
    + +
    +
    Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
    +
    + +
    +
    Class that realizes all the game logic of a very simple game level.
    +
    +
    +
    +
  • +
  • +
    +
    Classes in playground used by rendering
    +
    +
    Class
    +
    Description
    + +
     
    +
    +
    +
  • +
  • +
    +
    Classes in playground used by ui
    +
    +
    Class
    +
    Description
    + +
    +
    Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
    +
    +
    +
    +
  • +
+
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/AnimationArtist.html b/prog2-codebase/GameProject/doc/rendering/AnimationArtist.html new file mode 100644 index 0000000..4e42fa9 --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/AnimationArtist.html @@ -0,0 +1,194 @@ + + + + +AnimationArtist + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package rendering
+

Class AnimationArtist

+
+
java.lang.Object +
rendering.Artist +
rendering.AnimationArtist
+
+
+
+
+
public class AnimationArtist +extends Artist
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AnimationArtist

      +
      public AnimationArtist(GameObject go, + Animation anim, + double t0, + String playmode, + double scale)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getW

      +
      public double getW()
      +
      +
    • +
    • +
      +

      getH

      +
      public double getH()
      +
      +
    • +
    • +
      +

      draw

      +
      public void draw(Graphics2D g)
      +
      +
      Specified by:
      +
      draw in class Artist
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/Artist.html b/prog2-codebase/GameProject/doc/rendering/Artist.html new file mode 100644 index 0000000..d0c4efc --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/Artist.html @@ -0,0 +1,181 @@ + + + + +Artist + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package rendering
+

Class Artist

+
+
java.lang.Object +
rendering.Artist
+
+
+
+
Direct Known Subclasses:
+
AnimationArtist, CircleArtist, RectArtist, TextArtist
+
+
+
public abstract class Artist +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getX

      +
      public double getX()
      +
      +
    • +
    • +
      +

      getY

      +
      public double getY()
      +
      +
    • +
    • +
      +

      getVX

      +
      public double getVX()
      +
      +
    • +
    • +
      +

      getVY

      +
      public double getVY()
      +
      +
    • +
    • +
      +

      getGameTime

      +
      public double getGameTime()
      +
      +
    • +
    • +
      +

      draw

      +
      public abstract void draw(Graphics2D g)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/CircleArtist.html b/prog2-codebase/GameProject/doc/rendering/CircleArtist.html new file mode 100644 index 0000000..afd93a6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/CircleArtist.html @@ -0,0 +1,180 @@ + + + + +CircleArtist + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package rendering
+

Class CircleArtist

+
+
java.lang.Object +
rendering.Artist +
rendering.CircleArtist
+
+
+
+
+
public class CircleArtist +extends Artist
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      CircleArtist

      +
      public CircleArtist(GameObject go)
      +
      +
    • +
    • +
      +

      CircleArtist

      +
      public CircleArtist(GameObject go, + double egoRad, + Color color)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/RectArtist.html b/prog2-codebase/GameProject/doc/rendering/RectArtist.html new file mode 100644 index 0000000..d63981b --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/RectArtist.html @@ -0,0 +1,174 @@ + + + + +RectArtist + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package rendering
+

Class RectArtist

+
+
java.lang.Object +
rendering.Artist +
rendering.RectArtist
+
+
+
+
+
public class RectArtist +extends Artist
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      RectArtist

      +
      public RectArtist(GameObject go, + double width, + double height, + Color color)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/TextArtist.html b/prog2-codebase/GameProject/doc/rendering/TextArtist.html new file mode 100644 index 0000000..792d10b --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/TextArtist.html @@ -0,0 +1,244 @@ + + + + +TextArtist + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package rendering
+

Class TextArtist

+
+
java.lang.Object +
rendering.Artist +
rendering.TextArtist
+
+
+
+
+
public class TextArtist +extends Artist
+
Rendering an object as a text of a specified color, size and font.
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      TextArtist

      +
      public TextArtist(GameObject go, + String text, + int size, + Color textColor)
      +
      Constructor to intitialize the TextArtist attributes
      +
      +
      Parameters:
      +
      go - GameObject to be used for xy coordinate reference
      +
      text - the text to draw
      +
      size - point size to be used for font "Serif"
      +
      textColor - color to draw the text with (foreground)
      +
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getText

      +
      public String getText()
      +
      +
    • +
    • +
      +

      setText

      +
      public void setText(String s)
      +
      +
    • +
    • +
      +

      getTextWidth

      +
      public double getTextWidth()
      +
      +
    • +
    • +
      +

      setTextWidth

      +
      public void setTextWidth(double textWidth)
      +
      +
    • +
    • +
      +

      getTextHeight

      +
      public double getTextHeight()
      +
      +
    • +
    • +
      +

      setTextHeight

      +
      public void setTextHeight(double textHeight)
      +
      +
    • +
    • +
      +

      draw

      +
      public void draw(Graphics2D g)
      +
      Draw the text.
      +
      +
      Specified by:
      +
      draw in class Artist
      +
      Parameters:
      +
      g - The Swing graphics context.
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/class-use/AnimationArtist.html b/prog2-codebase/GameProject/doc/rendering/class-use/AnimationArtist.html new file mode 100644 index 0000000..c104d3b --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/class-use/AnimationArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.AnimationArtist + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
rendering.AnimationArtist

+
+No usage of rendering.AnimationArtist
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/class-use/Artist.html b/prog2-codebase/GameProject/doc/rendering/class-use/Artist.html new file mode 100644 index 0000000..4e34e5e --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/class-use/Artist.html @@ -0,0 +1,112 @@ + + + + +Uses of Class rendering.Artist + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
rendering.Artist

+
+
Packages that use Artist
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/class-use/CircleArtist.html b/prog2-codebase/GameProject/doc/rendering/class-use/CircleArtist.html new file mode 100644 index 0000000..7bd8998 --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/class-use/CircleArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.CircleArtist + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
rendering.CircleArtist

+
+No usage of rendering.CircleArtist
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/class-use/RectArtist.html b/prog2-codebase/GameProject/doc/rendering/class-use/RectArtist.html new file mode 100644 index 0000000..c36d4b2 --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/class-use/RectArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.RectArtist + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
rendering.RectArtist

+
+No usage of rendering.RectArtist
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/class-use/TextArtist.html b/prog2-codebase/GameProject/doc/rendering/class-use/TextArtist.html new file mode 100644 index 0000000..aaac408 --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/class-use/TextArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.TextArtist + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
rendering.TextArtist

+
+No usage of rendering.TextArtist
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/package-summary.html b/prog2-codebase/GameProject/doc/rendering/package-summary.html new file mode 100644 index 0000000..5f1dc4f --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/package-summary.html @@ -0,0 +1,93 @@ + + + + +rendering + + + + + + + + + + + + + + + +
+ +
+
+
+

Package rendering

+
+
+
package rendering
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/package-tree.html b/prog2-codebase/GameProject/doc/rendering/package-tree.html new file mode 100644 index 0000000..31021fb --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/package-tree.html @@ -0,0 +1,79 @@ + + + + +rendering Class Hierarchy + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package rendering

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/rendering/package-use.html b/prog2-codebase/GameProject/doc/rendering/package-use.html new file mode 100644 index 0000000..3fa580d --- /dev/null +++ b/prog2-codebase/GameProject/doc/rendering/package-use.html @@ -0,0 +1,93 @@ + + + + +Uses of Package rendering + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
rendering

+
+
Packages that use rendering
+
+
Package
+
Description
+ +
 
+ +
 
+
+
+ +
+
+
+
+ + diff --git a/prog2-codebase/GameProject/doc/resources/glass.png b/prog2-codebase/GameProject/doc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/prog2-codebase/GameProject/doc/resources/glass.png differ diff --git a/prog2-codebase/GameProject/doc/resources/x.png b/prog2-codebase/GameProject/doc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/prog2-codebase/GameProject/doc/resources/x.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..34abd18 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png new file mode 100644 index 0000000..f058a93 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..2ce04c1 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..a90afb8 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..dbe091f Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..5dc3593 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e723e17 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..1f5f497 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..618f5b0 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..ee5e33f Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7e8ebc1 Binary files /dev/null and b/prog2-codebase/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png differ diff --git a/prog2-codebase/GameProject/doc/script-dir/jquery-3.5.1.min.js b/prog2-codebase/GameProject/doc/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/prog2-codebase/GameProject/doc/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/script-dir/jquery-ui.structure.min.css b/prog2-codebase/GameProject/doc/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/prog2-codebase/GameProject/doc/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/script.js b/prog2-codebase/GameProject/doc/script.js new file mode 100644 index 0000000..0765364 --- /dev/null +++ b/prog2-codebase/GameProject/doc/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/prog2-codebase/GameProject/doc/search.js b/prog2-codebase/GameProject/doc/search.js new file mode 100644 index 0000000..df0e6fb --- /dev/null +++ b/prog2-codebase/GameProject/doc/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Types"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + item.category + "
    • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
      " + + item.d + "
      "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/prog2-codebase/GameProject/doc/stylesheet.css b/prog2-codebase/GameProject/doc/stylesheet.css new file mode 100644 index 0000000..836c62d --- /dev/null +++ b/prog2-codebase/GameProject/doc/stylesheet.css @@ -0,0 +1,865 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/prog2-codebase/GameProject/doc/tag-search-index.js b/prog2-codebase/GameProject/doc/tag-search-index.js new file mode 100644 index 0000000..f2a440c --- /dev/null +++ b/prog2-codebase/GameProject/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"}];updateSearchResults(); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/type-search-index.js b/prog2-codebase/GameProject/doc/type-search-index.js new file mode 100644 index 0000000..0ca7fcf --- /dev/null +++ b/prog2-codebase/GameProject/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"gameobjects","l":"AnimatedGameobject"},{"p":"playground","l":"Animation"},{"p":"rendering","l":"AnimationArtist"},{"p":"rendering","l":"Artist"},{"p":"rendering","l":"CircleArtist"},{"p":"collider","l":"CircleCollider"},{"p":"collider","l":"Collider"},{"p":"controller","l":"CollisionAwareEgoController"},{"p":"controller","l":"EgoController"},{"p":"gameobjects","l":"EgoObject"},{"p":"controller","l":"EnemyController"},{"p":"gameobjects","l":"FallingStar"},{"p":"controller","l":"FallingStarController"},{"p":"base","l":"GameLoop"},{"p":"gameobjects","l":"GameObject"},{"p":"ui","l":"GameUI"},{"p":"playground","l":"HighscoreManager"},{"p":"playground","l":"Level1"},{"p":"playground","l":"Level2"},{"p":"playground","l":"Level3"},{"p":"playground","l":"Level4"},{"p":"playground","l":"Level5"},{"p":"playground","l":"Level6"},{"p":"playground","l":"Level7"},{"p":"playground","l":"LevelBoss"},{"p":"playground","l":"LevelHitTwice"},{"p":"playground","l":"LevelWithBox"},{"p":"controller","l":"LimitedTimeController"},{"p":"controller","l":"MineController"},{"p":"base","l":"MultiLevelGame"},{"p":"playground","l":"Music"},{"p":"controller","l":"ObjectController"},{"p":"playground","l":"Playground"},{"p":"rendering","l":"RectArtist"},{"p":"collider","l":"RectCollider"},{"p":"gameobjects","l":"RectObject"},{"p":"playground","l":"SaveGame"},{"p":"controller","l":"SimpleShotController"},{"p":"playground","l":"SpaceInvadersLevel"},{"p":"rendering","l":"TextArtist"},{"p":"gameobjects","l":"TextObject"},{"p":"controller","l":"ZickZackController"}];updateSearchResults(); \ No newline at end of file diff --git a/prog2-codebase/GameProject/doc/ui/GameUI.html b/prog2-codebase/GameProject/doc/ui/GameUI.html new file mode 100644 index 0000000..b9f6cd6 --- /dev/null +++ b/prog2-codebase/GameProject/doc/ui/GameUI.html @@ -0,0 +1,451 @@ + + + + +GameUI + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package ui
      +

      Class GameUI

      +
      +
      java.lang.Object +
      ui.GameUI
      +
      +
      +
      +
      All Implemented Interfaces:
      +
      ActionListener, EventListener
      +
      +
      +
      public class GameUI +extends Object +implements ActionListener
      +
      creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games. Has a menu for loading, saving games and an about menu item. two buttons allow + restarting the game or exit.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          ACTION_NEW

          +
          public static final int ACTION_NEW
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_LOAD

          +
          public static final int ACTION_LOAD
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_SAVE

          +
          public static final int ACTION_SAVE
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_RESET

          +
          public static final int ACTION_RESET
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_QUIT

          +
          public static final int ACTION_QUIT
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_BUTTON

          +
          public static final int ACTION_BUTTON
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_PAUSE

          +
          public static final int ACTION_PAUSE
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          ACTION_ABOUT

          +
          public static final int ACTION_ABOUT
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          GameUI

          +
          public GameUI(int sizeX, + int sizeY)
          +
          as typical for GUI classes this constructor creates all the components and adds them to the + frame. It adds this instance as ActionListener for all components. See + actionPerformed(ActionEvent) for details. It directly sets the frame visible as a + final step. + +

          + If you want to extend this GUI, create a subclass and add new elements in constructor. It is + necessary to call Component.revalidate() on frame attribute after changing/adding + components to panel or canvas, because the constructor here already sets + visibility to true and renders the IFrame. +

          +
          +
          Parameters:
          +
          sizeX - pixel dimension wanted in x direction
          +
          sizeY - pixel dimension wanted in y direction
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getCurrentKey

          +
          public HashMap<Integer,Integer> getCurrentKey()
          +
          +
        • +
        • +
          +

          getKeyEvents

          +
          public Stack<KeyEvent> getKeyEvents()
          +
          +
        • +
        • +
          +

          getMouseEvents

          +
          public Stack<MouseEvent> getMouseEvents()
          +
          +
        • +
        • +
          +

          repaint

          +
          public void repaint()
          +
          +
        • +
        • +
          +

          setPlayground

          +
          public void setPlayground(Playground pg)
          +
          +
        • +
        • +
          +

          isPainting

          +
          public boolean isPainting()
          +
          +
        • +
        • +
          +

          setPainting

          +
          public void setPainting()
          +
          +
        • +
        • +
          +

          waitWhilePainting

          +
          public void waitWhilePainting()
          +
          +
        • +
        • +
          +

          getNewAction

          +
          public static int getNewAction()
          +
          +
        • +
        • +
          +

          resetAction

          +
          public static void resetAction()
          +
          +
        • +
        • +
          +

          grabFocus

          +
          public void grabFocus()
          +
          +
        • +
        • +
          +

          actionPerformed

          +
          public void actionPerformed(ActionEvent ae)
          +
          interface implementation of ActionListener to respond to GUI element actions. It sets the + attribute of newAction which is read by GameLoop.runGame to check for GUI actions.
          +
          +
          Specified by:
          +
          actionPerformed in interface ActionListener
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/prog2-codebase/GameProject/doc/ui/class-use/GameUI.html b/prog2-codebase/GameProject/doc/ui/class-use/GameUI.html new file mode 100644 index 0000000..116a72c --- /dev/null +++ b/prog2-codebase/GameProject/doc/ui/class-use/GameUI.html @@ -0,0 +1,58 @@ + + + + +Uses of Class ui.GameUI + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      ui.GameUI

      +
      +No usage of ui.GameUI
      +
      +
      + + diff --git a/prog2-codebase/GameProject/doc/ui/package-summary.html b/prog2-codebase/GameProject/doc/ui/package-summary.html new file mode 100644 index 0000000..2f5a88c --- /dev/null +++ b/prog2-codebase/GameProject/doc/ui/package-summary.html @@ -0,0 +1,86 @@ + + + + +ui + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package ui

      +
      +
      +
      package ui
      +
      +
        +
      • +
        +
        Classes
        +
        +
        Class
        +
        Description
        + +
        +
        creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/prog2-codebase/GameProject/doc/ui/package-tree.html b/prog2-codebase/GameProject/doc/ui/package-tree.html new file mode 100644 index 0000000..ae69959 --- /dev/null +++ b/prog2-codebase/GameProject/doc/ui/package-tree.html @@ -0,0 +1,72 @@ + + + + +ui Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package ui

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/prog2-codebase/GameProject/doc/ui/package-use.html b/prog2-codebase/GameProject/doc/ui/package-use.html new file mode 100644 index 0000000..7549e00 --- /dev/null +++ b/prog2-codebase/GameProject/doc/ui/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package ui + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      ui

      +
      +No usage of ui
      +
      +
      + + diff --git a/prog2-codebase/GameProject/highscore.txt b/prog2-codebase/GameProject/highscore.txt new file mode 100644 index 0000000..daea1ec --- /dev/null +++ b/prog2-codebase/GameProject/highscore.txt @@ -0,0 +1 @@ +17200 \ No newline at end of file diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/LICENSE.txt b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/LICENSE.txt new file mode 100644 index 0000000..6279e52 --- /dev/null +++ b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 1999-2005 The Apache Software Foundation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/NOTICE.txt b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/NOTICE.txt new file mode 100644 index 0000000..bd95322 --- /dev/null +++ b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/NOTICE.txt @@ -0,0 +1,17 @@ +Apache Log4j +Copyright 1999-2017 Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +ResolverUtil.java +Copyright 2005-2006 Tim Fennell + +Dumbster SMTP test server +Copyright 2004 Jason Paul Kitchen + +TypeUtil.java +Copyright 2002-2012 Ramnivas Laddad, Juergen Hoeller, Chris Beams + +picocli (http://picocli.info) +Copyright 2017 Remko Popma diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/RELEASE-NOTES.md b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/RELEASE-NOTES.md new file mode 100644 index 0000000..e6d1ba4 --- /dev/null +++ b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/RELEASE-NOTES.md @@ -0,0 +1,60 @@ + +# Apache Log4j 2.13.3 Release Notes + +The Apache Log4j 2 team is pleased to announce the Log4j 2.13.3 release! + +Apache Log4j is a well known framework for logging application behavior. Log4j 2 is an upgrade +to Log4j that provides significant improvements over its predecessor, Log4j 1.x, and provides +many other modern features such as support for Markers, lambda expressions for lazy logging, +property substitution using Lookups, multiple patterns on a PatternLayout and asynchronous +Loggers. Another notable Log4j 2 feature is the ability to be "garbage-free" (avoid allocating +temporary objects) while logging. In addition, Log4j 2 will not lose events while reconfiguring. + +The artifacts may be downloaded from https://logging.apache.org/log4j/2.x/download.html. + +This release contains a fix for bug LOG4J2-2838. + +Due to a break in compatibility in the SLF4J binding, Log4j now ships with two versions of the SLF4J to Log4j adapters. +log4j-slf4j-impl should be used with SLF4J 1.7.x and earlier and log4j-slf4j18-impl should be used with SLF4J 1.8.x and +later. + +Note that the default XML, JSON and YAML formats changed in the 2.11.0 release: they no longer have the "timeMillis" +attribute and instead have an "Instant" element with "epochSecond" and "nanoOfSecond" attributes. If the previous +behavior is desired the "includeTimeMillis" attribute may be set to true on each of the respective Layouts. + +The Log4j 2.13.3 API, as well as many core components, maintains binary compatibility with previous releases. + +## GA Release 2.13.3 + +Changes in this version include: + + +### Fixed Bugs +* [LOG4J2-2838](https://issues.apache.org/jira/browse/LOG4J2-2838): +Fix NullPointerException in ThreadContextDataInjector. + + +--- + +Apache Log4j 2.13.3 requires a minimum of Java 8 to build and run. Log4j 2.3 was the +last release that supported Java 6 and Log4j 2.12.1 is the last release to support Java 7. + +For complete information on Apache Log4j 2, including instructions on how to submit bug +reports, patches, or suggestions for improvement, see the Apache Apache Log4j 2 website: + +https://logging.apache.org/log4j/2.x/ \ No newline at end of file diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-1.2-api-2.13.3.jar b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-1.2-api-2.13.3.jar new file mode 100644 index 0000000..4af51ac Binary files /dev/null and b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-1.2-api-2.13.3.jar differ diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-api-2.13.3.jar b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-api-2.13.3.jar new file mode 100644 index 0000000..95e665d Binary files /dev/null and b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-api-2.13.3.jar differ diff --git a/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-core-2.13.3.jar b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-core-2.13.3.jar new file mode 100644 index 0000000..973fa7b Binary files /dev/null and b/prog2-codebase/GameProject/lib/apache-log4j-2.13.3-bin/log4j-core-2.13.3.jar differ diff --git a/prog2-codebase/GameProject/log/log4j.log b/prog2-codebase/GameProject/log/log4j.log new file mode 100644 index 0000000..1a6119f --- /dev/null +++ b/prog2-codebase/GameProject/log/log4j.log @@ -0,0 +1,801 @@ +2022-04-27 15:08:28,873 INFO base.GameLoop - GUI starts +2022-04-27 15:08:42,503 INFO base.GameLoop - GUI NEW +2022-04-27 15:08:42,505 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:08:42,646 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:08:42,670 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:08:42,679 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:08:42,692 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:08:42,706 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:08:42,719 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:08:42,730 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:08:42,741 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:08:42,779 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:08:42,788 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:08:42,799 WARN playground.HighscoreManager - WARNING: Highscore file was not found and reset +2022-04-27 15:08:42,802 INFO playground.HighscoreManager - Highscore file was opened and saved score: 0 +2022-04-27 15:08:42,811 INFO playground.SpaceInvadersLevel - HIGHSCORE0 +2022-04-27 15:09:27,071 INFO playground.HighscoreManager - Highscore file was opened and saved score: 3400 +2022-04-27 15:09:27,072 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:09:27,073 INFO base.GameLoop - reached end of levels +2022-04-27 15:09:27,074 INFO base.GameLoop - Game ends. Bye. +2022-04-27 15:11:08,991 INFO base.GameLoop - GUI starts +2022-04-27 15:11:13,117 INFO base.GameLoop - GUI NEW +2022-04-27 15:11:13,119 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:11:13,255 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:11:13,282 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:11:13,293 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:11:13,307 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:11:13,324 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:11:13,339 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:11:13,351 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:11:13,362 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:11:13,402 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:11:13,412 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:11:13,427 INFO playground.SpaceInvadersLevel - HIGHSCORE3400 +2022-04-27 15:11:30,697 INFO playground.HighscoreManager - Highscore file was opened and saved score: 6000 +2022-04-27 15:11:30,698 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:11:30,701 INFO base.GameLoop - reached end of levels +2022-04-27 15:11:30,702 INFO base.GameLoop - Game ends. Bye. +2022-04-27 15:12:05,792 INFO base.GameLoop - GUI starts +2022-04-27 15:12:08,004 INFO base.GameLoop - GUI NEW +2022-04-27 15:12:08,005 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:12:08,135 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:12:08,158 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:12:08,167 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:12:08,180 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:12:08,194 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:12:08,208 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:12:08,219 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:12:08,233 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:12:08,264 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:12:08,274 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:12:08,289 INFO playground.SpaceInvadersLevel - HIGHSCORE6000 +2022-04-27 15:12:15,193 INFO base.GameLoop - GUI NEW +2022-04-27 15:12:15,194 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:12:15,207 INFO playground.SpaceInvadersLevel - HIGHSCORE6000 +2022-04-27 15:12:42,017 INFO playground.HighscoreManager - Highscore file was opened and saved score: 7000 +2022-04-27 15:12:42,018 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:12:42,019 INFO base.GameLoop - reached end of levels +2022-04-27 15:12:42,020 INFO base.GameLoop - Game ends. Bye. +2022-04-27 15:34:28,095 INFO base.GameLoop - GUI starts +2022-04-27 15:34:32,790 INFO base.GameLoop - GUI NEW +2022-04-27 15:34:32,791 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:34:32,914 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:34:32,937 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:34:32,946 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:34:32,958 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:34:32,972 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:34:32,985 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:34:32,996 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:34:33,005 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:34:33,037 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:34:33,047 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:34:33,061 INFO playground.SpaceInvadersLevel - HIGHSCORE7000 +2022-04-27 15:35:02,484 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:35:02,486 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:35:02,513 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:35:02,521 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:35:02,527 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:35:02,533 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:35:02,540 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:35:02,547 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:35:02,553 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:35:02,559 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:35:02,581 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:35:02,588 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:35:02,597 INFO playground.SpaceInvadersLevel - HIGHSCORE7000 +2022-04-27 15:35:16,099 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:35:16,101 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:35:16,121 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:35:16,127 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:35:16,134 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:35:16,139 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:35:16,144 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:35:16,150 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:35:16,155 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:35:16,160 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:35:16,180 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:35:16,186 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:35:16,192 INFO playground.SpaceInvadersLevel - HIGHSCORE7000 +2022-04-27 15:35:44,530 INFO playground.HighscoreManager - Highscore file was opened and saved score: 9900 +2022-04-27 15:35:44,531 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:35:44,533 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:35:44,552 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:35:44,558 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:35:44,563 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:35:44,568 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:35:44,573 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:35:44,578 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:35:44,582 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:35:44,589 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:35:44,608 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:35:44,614 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:35:44,620 INFO playground.SpaceInvadersLevel - HIGHSCORE9900 +2022-04-27 15:35:49,481 INFO playground.HighscoreManager - Highscore file was opened and saved score: 10100 +2022-04-27 15:35:49,482 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:35:49,484 INFO base.GameLoop - reached end of levels +2022-04-27 15:35:49,485 INFO base.GameLoop - Game ends. Bye. +2022-04-27 15:52:31,906 INFO base.GameLoop - GUI starts +2022-04-27 15:52:39,570 INFO base.GameLoop - GUI NEW +2022-04-27 15:52:39,571 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:52:39,698 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:52:39,723 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:52:39,732 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:52:39,745 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:52:39,759 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:52:39,772 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:52:39,783 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:52:39,793 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:52:39,827 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:52:39,837 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:52:39,855 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 15:53:03,803 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:53:03,805 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:53:03,832 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:53:03,840 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:53:03,847 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:53:03,854 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:53:03,861 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:53:03,868 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:53:03,874 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:53:03,881 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:53:03,902 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:53:03,909 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:53:03,918 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 15:53:18,658 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 15:53:18,661 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 15:53:18,679 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 15:53:18,685 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 15:53:18,692 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 15:53:18,697 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 15:53:18,702 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 15:53:18,708 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 15:53:18,713 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 15:53:18,719 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 15:53:18,738 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 15:53:18,746 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 15:53:18,752 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:48:54,703 INFO base.GameLoop - GUI starts +2022-04-27 19:49:02,497 INFO base.GameLoop - GUI NEW +2022-04-27 19:49:02,498 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:49:02,636 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:49:02,658 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:49:02,668 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:49:02,681 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:49:02,695 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:49:02,708 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:49:02,719 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:49:02,729 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:49:02,762 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:49:02,772 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:49:02,787 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:49:49,255 INFO base.GameLoop - GUI NEW +2022-04-27 19:49:49,257 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:49:49,270 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:50:04,193 INFO base.GameLoop - GUI LOAD +2022-04-27 19:50:06,082 INFO base.GameLoop - GUI NEW +2022-04-27 19:50:06,083 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:50:06,090 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:50:18,018 INFO base.GameLoop - GUI starts +2022-04-27 19:50:22,770 INFO base.GameLoop - GUI NEW +2022-04-27 19:50:22,772 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:50:22,928 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:50:22,954 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:50:22,965 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:50:22,980 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:50:22,996 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:50:23,011 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:50:23,025 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:50:23,035 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:50:23,070 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:50:23,080 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:50:23,098 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:52:03,688 INFO base.GameLoop - GUI PAUSE +2022-04-27 19:52:05,185 INFO base.GameLoop - GUI PAUSE +2022-04-27 19:53:18,085 INFO base.GameLoop - GUI starts +2022-04-27 19:53:21,127 INFO base.GameLoop - GUI NEW +2022-04-27 19:53:21,129 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:53:21,267 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:53:21,293 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:53:21,303 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:53:21,317 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:53:21,333 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:53:21,350 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:53:21,364 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:53:21,374 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:53:21,415 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:53:21,425 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:53:21,441 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:53:48,571 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 19:53:48,574 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:53:48,601 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:53:48,609 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:53:48,614 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:53:48,621 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:53:48,627 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:53:48,635 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:53:48,641 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:53:48,648 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:53:48,669 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:53:48,676 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:53:48,685 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:54:00,941 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 19:54:00,943 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:54:00,961 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:54:00,967 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:54:00,975 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:54:00,980 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:54:00,985 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:54:00,990 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:54:00,995 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:54:01,001 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:54:01,019 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:54:01,026 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:54:01,032 INFO playground.SpaceInvadersLevel - HIGHSCORE10100 +2022-04-27 19:54:19,772 INFO playground.HighscoreManager - Highscore file was opened and saved score: 13200 +2022-04-27 19:54:19,773 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 19:54:19,774 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-27 19:54:19,792 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-27 19:54:19,798 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-27 19:54:19,804 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-27 19:54:19,809 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-27 19:54:19,814 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-27 19:54:19,819 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-27 19:54:19,825 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-27 19:54:19,831 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-27 19:54:19,851 INFO playground.Animation - img added .\video/heart0.png +2022-04-27 19:54:19,859 INFO playground.Animation - img added .\video/heart1.png +2022-04-27 19:54:19,872 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-04-27 19:54:34,716 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-27 19:54:34,717 INFO base.GameLoop - reached end of levels +2022-04-27 19:54:34,718 INFO base.GameLoop - Game ends. Bye. +2022-04-28 13:34:43,205 INFO base.GameLoop - GUI starts +2022-04-28 13:34:47,117 INFO base.GameLoop - GUI NEW +2022-04-28 13:34:47,118 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-28 13:34:47,277 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-28 13:34:47,301 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-28 13:34:47,311 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-28 13:34:47,323 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-28 13:34:47,337 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-28 13:34:47,351 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-28 13:34:47,361 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-28 13:34:47,371 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-28 13:34:47,409 INFO playground.Animation - img added .\video/heart0.png +2022-04-28 13:34:47,419 INFO playground.Animation - img added .\video/heart1.png +2022-04-28 13:34:47,444 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-04-28 13:35:01,237 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-28 13:35:01,239 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-28 13:35:01,269 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-28 13:35:01,277 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-28 13:35:01,282 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-28 13:35:01,289 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-28 13:35:01,296 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-28 13:35:01,304 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-28 13:35:01,311 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-28 13:35:01,318 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-28 13:35:01,342 INFO playground.Animation - img added .\video/heart0.png +2022-04-28 13:35:01,349 INFO playground.Animation - img added .\video/heart1.png +2022-04-28 13:35:01,358 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-04-28 13:35:19,045 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-28 13:35:19,047 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-28 13:35:19,068 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-28 13:35:19,074 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-28 13:35:19,081 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-28 13:35:19,087 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-28 13:35:19,092 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-28 13:35:19,097 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-28 13:35:19,103 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-28 13:35:19,108 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-28 13:35:19,127 INFO playground.Animation - img added .\video/heart0.png +2022-04-28 13:35:19,135 INFO playground.Animation - img added .\video/heart1.png +2022-04-28 13:35:19,141 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-04-28 13:35:43,429 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-28 13:35:43,430 INFO playground.SpaceInvadersLevel - PREPARE +2022-04-28 13:35:43,448 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-04-28 13:35:43,454 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-04-28 13:35:43,460 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-04-28 13:35:43,465 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-04-28 13:35:43,470 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-04-28 13:35:43,475 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-04-28 13:35:43,481 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-04-28 13:35:43,487 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-04-28 13:35:43,505 INFO playground.Animation - img added .\video/heart0.png +2022-04-28 13:35:43,512 INFO playground.Animation - img added .\video/heart1.png +2022-04-28 13:35:43,517 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-04-28 13:35:51,623 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-04-28 13:35:51,625 INFO base.GameLoop - reached end of levels +2022-04-28 13:35:51,626 INFO base.GameLoop - Game ends. Bye. +2022-05-05 14:07:27,447 INFO base.GameLoop - GUI starts +2022-05-05 14:07:39,713 INFO base.GameLoop - GUI NEW +2022-05-05 14:07:39,714 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:07:39,876 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:07:39,899 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:07:39,908 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:07:39,921 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:07:39,935 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:07:39,948 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:07:39,958 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:07:39,967 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:07:40,006 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:07:40,016 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:07:40,045 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:11:54,139 INFO base.GameLoop - GUI starts +2022-05-05 14:11:58,998 INFO base.GameLoop - GUI NEW +2022-05-05 14:11:59,000 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:11:59,142 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:11:59,165 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:11:59,173 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:11:59,185 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:11:59,199 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:11:59,212 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:11:59,222 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:11:59,230 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:11:59,262 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:11:59,270 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:11:59,286 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:17:38,877 INFO base.GameLoop - GUI starts +2022-05-05 14:17:41,254 INFO base.GameLoop - GUI NEW +2022-05-05 14:17:41,256 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:17:41,380 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:17:41,402 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:17:41,410 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:17:41,422 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:17:41,435 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:17:41,448 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:17:41,458 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:17:41,466 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:17:41,498 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:17:41,507 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:17:41,522 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:18:13,139 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:18:13,142 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:18:13,169 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:18:13,176 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:18:13,181 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:18:13,188 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:18:13,194 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:18:13,201 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:18:13,206 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:18:13,211 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:18:13,232 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:18:13,239 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:18:13,248 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:18:51,614 INFO base.GameLoop - GUI starts +2022-05-05 14:18:54,135 INFO base.GameLoop - GUI NEW +2022-05-05 14:18:54,136 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:18:54,255 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:18:54,277 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:18:54,285 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:18:54,296 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:18:54,310 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:18:54,322 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:18:54,331 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:18:54,339 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:18:54,370 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:18:54,378 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:18:54,392 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:44:11,981 INFO base.GameLoop - GUI starts +2022-05-05 14:44:15,197 INFO base.GameLoop - GUI NEW +2022-05-05 14:44:15,198 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:44:15,320 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:44:15,342 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:44:15,350 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:44:15,362 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:44:15,375 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:44:15,388 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:44:15,398 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:44:15,406 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:44:15,437 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:44:15,446 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:44:15,460 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:44:52,222 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:44:52,225 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:44:52,255 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:44:52,263 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:44:52,269 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:44:52,276 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:44:52,283 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:44:52,290 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:44:52,297 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:44:52,302 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:44:52,328 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:44:52,335 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:44:52,344 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:45:15,536 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:45:15,538 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:45:15,557 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:45:15,562 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:45:15,568 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:45:15,573 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:45:15,577 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:45:15,583 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:45:15,588 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:45:15,593 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:45:15,612 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:45:15,619 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:45:15,625 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:45:49,154 INFO base.GameLoop - GUI starts +2022-05-05 14:45:56,211 INFO base.GameLoop - GUI NEW +2022-05-05 14:45:56,213 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:45:56,364 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:45:56,394 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:45:56,405 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:45:56,421 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:45:56,439 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:45:56,456 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:45:56,470 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:45:56,482 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:45:56,524 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:45:56,535 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:45:56,553 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:47:56,423 INFO base.GameLoop - GUI starts +2022-05-05 14:48:00,333 INFO base.GameLoop - GUI NEW +2022-05-05 14:48:00,334 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:48:00,462 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:48:00,485 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:48:00,494 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:48:00,507 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:48:00,520 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:48:00,532 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:48:00,542 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:48:00,551 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:48:00,585 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:48:00,593 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:48:00,607 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:48:10,233 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:48:10,235 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:48:10,267 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:48:10,275 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:48:10,281 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:48:10,288 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:48:10,294 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:48:10,302 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:48:10,308 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:48:10,314 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:48:10,338 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:48:10,345 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:48:10,355 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:53:39,102 INFO base.GameLoop - GUI starts +2022-05-05 14:53:42,902 INFO base.GameLoop - GUI NEW +2022-05-05 14:53:42,903 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:53:43,030 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:53:43,051 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:53:43,060 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:53:43,072 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:53:43,085 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:53:43,098 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:53:43,107 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:53:43,116 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:53:43,148 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:53:43,157 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:53:43,170 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:53:59,318 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:53:59,320 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:53:59,349 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:53:59,356 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:53:59,361 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:53:59,367 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:53:59,374 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:53:59,380 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:53:59,385 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:53:59,390 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:53:59,412 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:53:59,418 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:53:59,428 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:54:10,678 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:54:10,680 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-05 14:54:10,700 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-05 14:54:10,705 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-05 14:54:10,711 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-05 14:54:10,716 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-05 14:54:10,721 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-05 14:54:10,725 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-05 14:54:10,730 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-05 14:54:10,734 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-05 14:54:10,752 INFO playground.Animation - img added .\video/heart0.png +2022-05-05 14:54:10,758 INFO playground.Animation - img added .\video/heart1.png +2022-05-05 14:54:10,763 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-05 14:54:18,912 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-05 14:54:18,914 INFO base.GameLoop - reached end of levels +2022-05-05 14:54:18,915 INFO base.GameLoop - Game ends. Bye. +2022-05-06 10:45:35,421 INFO base.GameLoop - GUI starts +2022-05-06 10:45:39,164 INFO base.GameLoop - GUI NEW +2022-05-06 10:45:39,165 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 10:45:39,360 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 10:45:39,386 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 10:45:39,395 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 10:45:39,409 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 10:45:39,425 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 10:45:39,440 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 10:45:39,451 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 10:45:39,462 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 10:45:39,506 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 10:45:39,517 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 10:45:39,545 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 10:45:56,430 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 10:45:56,432 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 10:45:56,461 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 10:45:56,469 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 10:45:56,474 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 10:45:56,481 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 10:45:56,488 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 10:45:56,495 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 10:45:56,501 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 10:45:56,507 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 10:45:56,530 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 10:45:56,539 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 10:45:56,549 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 10:46:07,810 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 10:46:07,813 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 10:46:07,837 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 10:46:07,843 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 10:46:07,850 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 10:46:07,855 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 10:46:07,861 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 10:46:07,868 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 10:46:07,873 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 10:46:07,877 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 10:46:07,896 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 10:46:07,902 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 10:46:07,908 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 11:21:08,609 INFO base.GameLoop - GUI starts +2022-05-06 11:21:12,463 INFO base.GameLoop - GUI NEW +2022-05-06 11:21:12,464 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 11:21:12,631 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 11:21:12,658 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 11:21:12,667 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 11:21:12,682 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 11:21:12,697 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 11:21:12,712 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 11:21:12,725 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 11:21:12,734 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 11:21:12,771 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 11:21:12,782 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 11:21:12,799 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 11:21:21,179 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 11:21:21,214 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 11:21:21,222 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 11:21:21,228 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 11:21:21,235 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 11:21:21,242 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 11:21:21,250 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 11:21:21,257 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 11:21:21,263 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 11:21:21,287 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 11:21:21,293 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 11:21:21,302 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 11:21:35,394 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 11:21:35,396 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 11:21:35,416 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 11:21:35,422 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 11:21:35,429 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 11:21:35,434 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 11:21:35,439 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 11:21:35,445 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 11:21:35,450 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 11:21:35,457 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 11:21:35,477 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 11:21:35,485 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 11:21:35,492 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 11:22:53,762 INFO base.GameLoop - GUI starts +2022-05-06 11:22:57,195 INFO base.GameLoop - GUI NEW +2022-05-06 11:22:57,196 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 11:22:57,402 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 11:22:57,430 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 11:22:57,439 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 11:22:57,452 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 11:22:57,468 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 11:22:57,484 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 11:22:57,500 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 11:22:57,514 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 11:22:57,549 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 11:22:57,560 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 11:22:57,577 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 11:23:07,115 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 11:23:07,147 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 11:23:07,156 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 11:23:07,163 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 11:23:07,171 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 11:23:07,179 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 11:23:07,187 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 11:23:07,193 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 11:23:07,200 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 11:23:07,233 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 11:23:07,241 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 11:23:07,250 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:05:54,783 INFO base.GameLoop - GUI starts +2022-05-06 15:05:57,334 INFO base.GameLoop - GUI NEW +2022-05-06 15:05:57,336 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:05:57,490 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:05:57,515 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:05:57,524 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:05:57,537 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:05:57,552 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:05:57,565 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:05:57,576 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:05:57,585 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:05:57,619 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:05:57,629 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:05:57,644 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:07:31,320 INFO base.GameLoop - GUI starts +2022-05-06 15:07:34,212 INFO base.GameLoop - GUI NEW +2022-05-06 15:07:34,213 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:07:34,340 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:07:34,361 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:07:34,370 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:07:34,382 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:07:34,396 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:07:34,410 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:07:34,420 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:07:34,429 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:07:34,465 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:07:34,475 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:07:34,489 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:28:27,780 INFO base.GameLoop - GUI starts +2022-05-06 15:29:58,112 INFO base.GameLoop - GUI NEW +2022-05-06 15:29:58,114 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:29:58,256 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:29:58,283 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:29:58,294 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:29:58,308 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:29:58,323 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:29:58,335 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:29:58,345 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:29:58,355 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:29:58,387 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:29:58,395 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:29:58,412 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:30:09,825 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 15:30:09,827 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:30:09,854 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:30:09,860 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:30:09,866 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:30:09,872 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:30:09,878 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:30:09,885 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:30:09,890 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:30:09,895 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:30:09,916 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:30:09,922 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:30:09,932 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:41:50,124 INFO base.GameLoop - GUI starts +2022-05-06 17:46:34,145 INFO base.GameLoop - GUI starts +2022-05-06 17:46:37,975 INFO base.GameLoop - GUI NEW +2022-05-06 17:46:37,977 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:46:38,124 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:46:38,150 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:46:38,159 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:46:38,172 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:46:38,186 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:46:38,199 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:46:38,210 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:46:38,220 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:46:38,255 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:46:38,264 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:46:38,279 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:46:49,617 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:46:49,619 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:46:49,649 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:46:49,657 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:46:49,662 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:46:49,669 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:46:49,675 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:46:49,682 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:46:49,688 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:46:49,695 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:46:49,716 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:46:49,723 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:46:49,731 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:47:05,679 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:47:05,681 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:47:05,703 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:47:05,709 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:47:05,716 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:47:05,721 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:47:05,727 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:47:05,732 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:47:05,736 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:47:05,741 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:47:05,760 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:47:05,765 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:47:05,771 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:47:16,562 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:47:16,564 INFO base.GameLoop - reached end of levels +2022-05-06 17:47:16,565 INFO base.GameLoop - Game ends. Bye. +2022-05-10 18:22:21,133 INFO base.GameLoop - GUI starts +2022-05-10 18:22:24,786 INFO base.GameLoop - GUI NEW +2022-05-10 18:22:24,788 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:22:24,957 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:22:24,982 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:22:24,992 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:22:25,006 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:22:25,021 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:22:25,035 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:22:25,045 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:22:25,055 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:22:25,094 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:22:25,104 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:22:25,132 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:22:53,747 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:22:53,750 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:22:53,777 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:22:53,785 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:22:53,790 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:22:53,796 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:22:53,802 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:22:53,809 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:22:53,817 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:22:53,822 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:22:53,842 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:22:53,849 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:22:53,858 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:02,641 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:02,644 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:23:02,664 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:23:02,668 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:23:02,674 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:23:02,679 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:23:02,683 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:23:02,688 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:23:02,694 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:23:02,698 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:23:02,717 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:23:02,724 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:23:02,731 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:11,503 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:11,505 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:23:11,523 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:23:11,528 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:23:11,534 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:23:11,540 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:23:11,545 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:23:11,550 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:23:11,559 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:23:11,565 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:23:11,582 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:23:11,588 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:23:11,593 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:19,337 INFO playground.HighscoreManager - Highscore file was opened and saved score: 17200 +2022-05-10 18:23:19,338 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:19,339 INFO base.GameLoop - reached end of levels +2022-05-10 18:23:19,340 INFO base.GameLoop - Game ends. Bye. +2022-05-11 16:11:37,923 INFO base.GameLoop - GUI starts +2022-05-11 16:11:40,726 INFO base.GameLoop - GUI NEW +2022-05-11 16:11:40,727 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:11:40,895 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:11:40,922 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:11:40,932 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:11:40,946 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:11:40,963 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:11:40,976 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:11:40,987 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:11:40,997 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:11:41,035 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:11:41,045 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:11:41,068 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 +2022-05-11 16:12:27,344 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-11 16:12:27,347 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:12:27,373 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:12:27,380 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:12:27,386 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:12:27,393 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:12:27,399 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:12:27,407 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:12:27,412 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:12:27,417 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:12:27,440 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:12:27,446 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:12:27,455 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 +2022-05-11 16:12:33,328 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-11 16:12:33,329 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:12:33,346 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:12:33,352 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:12:33,358 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:12:33,362 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:12:33,366 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:12:33,372 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:12:33,377 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:12:33,381 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:12:33,399 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:12:33,406 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:12:33,412 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 diff --git a/prog2-codebase/GameProject/src/base/GameLoop.java b/prog2-codebase/GameProject/src/base/GameLoop.java new file mode 100644 index 0000000..eb72c12 --- /dev/null +++ b/prog2-codebase/GameProject/src/base/GameLoop.java @@ -0,0 +1,231 @@ +package base; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.ListIterator; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import gameobjects.GameObject; +import playground.Level1; +import playground.Playground; +import ui.GameUI; + + +/** + * Main class starting any game, contains main(). Apart from that, this class manages all + * non-logical functionalities which should be hidden from a game designer like: + *
        + *
      • Setting up windows, panels, buttons, action callbacks, ... + *
      • Reading keyboard inputs + *
      • Redrawing game window if necessary + *
      • managing the game time and calling the appropriate {@link GameObject} or {@link Playground} + * methods periodically, at every time step of the game. + *
      + * There will normally never be a need to modify this file, a designer/game programmer should always + * redefine the {@link GameObject} and {@link Playground} classes and implement new functionality + * there. To make a long story short
      + */ +public class GameLoop { + + /** Pixel width of Game GUI ( above 0) */ + public static int SIZEX = 300; + /** Pixel height of Game GUI (above 0) */ + public static int SIZEY = 200; + + /** + * before call to {@link #runGame(String[])} this List should be initialized (in constructor). + */ + private List levels = new ArrayList(0); + + private static Logger logger = LogManager.getLogger(GameLoop.class); + + /** constructor which calls {@link #defineLevels()}, which adds all levels of this game. + */ + public GameLoop() { + this.defineLevels(); + } + + /** + * First resets (clears) the already existing level instances of this game's list of levels ({@link #resetLevels()}), + * then adds one instance of {@link Level1} by calling {@link #addLevel()}. + * Should be called only before playing starts (e.g. in constructor or before {@link #runGame(String[]) } is called. + * + *
      Note: Subclasses of {@link GameLoop} should override this method to define own levels for their game. + */ + void defineLevels() { + this.resetLevels(); + this.addLevel(new Level1()); + } + + /** + * Adds the given level instance to the end of the currently already stored list of levels to play. + * Should be called only before playing starts (e.g. in constructor or before {@link #runGame(String[]) } is called. + * + * @param level instance of Playground (a level) to add. + */ + void addLevel(Playground level) { + this.levels.add(level); + } + + /** + * Removes all levels from the list of levels to play! Do not call this method while {@link #runGame(String[]) } is running! + */ + void resetLevels() { + this.levels.clear(); + } + + + /** + * loops over all {@link #levels} and implements the game loop to update continuously the level + * during play time + * + * @param args command line arguments forwarded (currently ignored) + * @throws IOException if hitghscore.txt cannot be written. + */ + public void runGame(String[] args) throws IOException { + + logger.info("GUI starts"); + GameUI gameUI = new GameUI(SIZEX, SIZEY); // probably change to your new GUI class + + double gameTime = -1; + Playground currentPlayground = null; + + // loop over different levels + ListIterator levelIterator = levels.listIterator(); + while (true) { + logger.debug("LevelIndex is " + (levelIterator.nextIndex()) + " (of " + levels.size() + " levels)"); + gameTime = 0; + long start = System.nanoTime(); + + // loop over single level + while (true) { + + int act = GameUI.getNewAction(); + + // Query GameUI for high-level user commands; new game/reset/etc... + if (act == GameUI.ACTION_RESET) { + // ReStart Game in same Level + logger.info("GUI RESET"); + currentPlayground.prepareLevel("level" + (levelIterator.nextIndex()-1)); + GameUI.resetAction(); + } + + if (act == GameUI.ACTION_NEW) { + // new game + logger.info("GUI NEW"); + start = System.nanoTime(); + levelIterator = levels.listIterator(); // reset + currentPlayground = levelIterator.next(); // again level + currentPlayground.prepareLevel("level" + (levelIterator.nextIndex()-1)); + gameUI.setPlayground(currentPlayground); + GameUI.resetAction(); + break; + } + + if (act == GameUI.ACTION_BUTTON) { + // Event of Button pressed --> PAUSE! + logger.info("GUI PAUSE"); + if (currentPlayground != null) { + boolean p = currentPlayground.isPaused(); + p = !p; + currentPlayground.setPaused(p); + } + GameUI.resetAction(); + } + + if (act == GameUI.ACTION_SAVE) { + logger.info("GUI SAVE"); + // UNDONE save current state (not yet working/implemented) + GameUI.resetAction(); + } + + if (act == GameUI.ACTION_LOAD) { + logger.info("GUI LOAD"); + // load game state (currently simply resets) + GameUI.resetAction(); + } + + // if game has been created: execute a single iteration of the game loop + if (currentPlayground != null) { + // calc time that was used for painting the game, in seconds since last loop + long end = System.nanoTime(); + double realTS = ((double) (end - start) / 1000000000.); + + // time calc for one loop of the while + start = System.nanoTime(); + + + + if (currentPlayground.levelFinished() || currentPlayground.gameOver() == true) { + break; // leave level; breaks WHILE + } + + // paint current state of level and start time measurement + gameUI.waitWhilePainting(); + + + gameUI.grabFocus(); // needed to grab input events in next step + + // communicate inputs to level + currentPlayground.processKeyEvents(gameUI.getKeyEvents()); + currentPlayground.processMouseEvents(gameUI.getMouseEvents()); + + if (currentPlayground.isPaused() == false) { + + // update objects and level + currentPlayground.updateObjects(); + currentPlayground.applyGameLogic(); + + + // update game time + gameTime += realTS; + // communicate gameTime and timestep to level + currentPlayground.setTimestep(realTS); + currentPlayground.setGameTime(gameTime); + Playground.setGlobalFlag("gameTime", Double.valueOf(realTS)); + logger.trace("gameTime is now "+gameTime); + + } // if + } // if + + } // inner while loop within level + + // after level is done: leave outer loop if game over + if (currentPlayground.gameOver() == true) { + break; // outer while ends game + } + + // after level is done: reset level and go to next, if there is one + if (currentPlayground.levelFinished() == true) { + currentPlayground.reset(); + + // increase level counter, go on to next one + logger.debug("level finished. now new LevelIndex is " + levelIterator.nextIndex()); + if (levelIterator.nextIndex() >= levels.size()) { + logger.info("reached end of levels"); + break; // outer while ends game; + } + currentPlayground = levelIterator.next(); + currentPlayground.prepareLevel("level" + (levelIterator.nextIndex()-1)); + } + + } // outer loop over levels + logger.info("Game ends. Bye."); + System.exit(0); + } // main() + + + /** + * main to start the whole application. + * initializes the {@link #levels} ArrayList of Playground instances (levels) to be played with one level {@link SpaceInvadersLevel} in constructor of {@link #GameLoop}. + * + * @param args Java default command line args, forwarded to {@link #runGame(String[])} + * @throws IOException in case highscore.txt cannot be written. + */ + public static void main(String[] args) throws IOException { + GameLoop gl = new GameLoop(); + gl.runGame(args); + } + +} diff --git a/prog2-codebase/GameProject/src/base/MultiLevelGame.java b/prog2-codebase/GameProject/src/base/MultiLevelGame.java new file mode 100644 index 0000000..bfc6801 --- /dev/null +++ b/prog2-codebase/GameProject/src/base/MultiLevelGame.java @@ -0,0 +1,26 @@ +package base; + +import java.io.IOException; + +import playground.LevelWithBox; +import playground.Level5; +import playground.Level6; +import playground.Level7; + + +public class MultiLevelGame extends GameLoop { + + @Override + void defineLevels() { + this.resetLevels(); + this.addLevel(new LevelWithBox()); + this.addLevel(new Level5()); + this.addLevel(new Level6()); + this.addLevel(new Level7()); + } + + public static void main(String[] args) throws IOException { + MultiLevelGame mlg = new MultiLevelGame(); + mlg.runGame(args); + } +} diff --git a/prog2-codebase/GameProject/src/collider/CircleCollider.java b/prog2-codebase/GameProject/src/collider/CircleCollider.java new file mode 100644 index 0000000..56743c3 --- /dev/null +++ b/prog2-codebase/GameProject/src/collider/CircleCollider.java @@ -0,0 +1,83 @@ +package collider; + +import gameobjects.*; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + + +/** Collider for round objects */ +public class CircleCollider extends Collider { + + double x; + double y; + double vx; + double vy; + + double r; + + private static Logger logger = LogManager.getLogger(Collider.class); + + /** + * Constructor which sets the radius to be respected for collisions. + * + * @param id String unique name for the collider instance + * @param o GameObject it belongs to + * @param radius radius in pixels to use as a size + */ + public CircleCollider(String id, GameObject o, double radius) { + + super(id, o); + this.r = radius; + } + + /** simple concatenation of all attributes (x,y,r) */ + public String toString() { + return "circ:" + x + " " + y + "/" + r + " "; + } + + + /** + * calculates the collission of this with other collider + * + * @param _c2 the other collider + * @return true if a collision was detected + * @throws Exception in case the math operations are invalid (due to illegal values of x y or + * radius) + */ + public boolean checkCollisionCircCirc(Collider _c2) throws Exception { + CircleCollider c2 = (CircleCollider) _c2; + CircleCollider c1 = this; + logger.trace(c1.x + " " + c1.y + " " + c1.r + " " + c2.x + " " + c2.y + " " + c2.r); + int kathete1 = (int) (Math.abs(c2.gameobject.getX() - c1.gameobject.getX())); + int kathete2 = (int) (Math.abs(c2.gameobject.getX() - c1.gameobject.getY())); + int hypothenuse = (int) (c1.r + c2.r); + + logger.trace(kathete1 + " " + kathete2 + " " + hypothenuse + " "); + + if (((kathete1 ^ 2) + (kathete2 ^ 2)) <= (hypothenuse ^ 2)) { + logger.trace("Collision"); + return true; + } + return false; + } + + + + @Override + public boolean collidesWith(Collider other) { + + // circ circ + try { + return checkCollisionCircCirc(other); + } catch (Exception e) { + } + + try { + return other.collidesWith(this); + } catch (Exception e) { + } + + throw new RuntimeException("Collider type not implemented!"); + } + +} diff --git a/prog2-codebase/GameProject/src/collider/Collider.java b/prog2-codebase/GameProject/src/collider/Collider.java new file mode 100644 index 0000000..81793cd --- /dev/null +++ b/prog2-codebase/GameProject/src/collider/Collider.java @@ -0,0 +1,125 @@ +package collider; + +import gameobjects.GameObject; +import playground.Playground; +import controller.ObjectController; + +/** + * abstract base class for all Colliders to detect collisions between GameObjects + * + * + */ +public abstract class Collider { + + /** unique internal name for Collider */ + public String id = null; + /** GameObject it belongs to */ + protected GameObject gameobject = null; + /** PlayGround instance it belongs to */ + protected Playground playground = null; + /** the ObjectController to the corresponding GameObject (can be null) */ + protected ObjectController controller = null; + + protected double dx = 0.; + double dy = 0.; + + /** + * + * @param id unique name for Collider (internally) + * @param o GameObject instance it belongs to + */ + public Collider(String id, GameObject o) { + this.gameobject = o; + + this.id = id; + this.controller = o.getObjectController(); + this.playground = o.getPlayground(); + + } + + + /** + * setter for offset values to be used relative to GameObject center. default is zero. + * + * @param dx offset in X direction (default 0) + * @param dy offset in Y direction (default 0) + * @return this instance of Collider + */ + public Collider setOffsets(double dx, double dy) { + this.dx = dx; + this.dy = dy; + return this; + } + + public String toString() { + return "baseColl"; + } + + /** + * returns the corresponding game objects X coordinate (center) plus this colliders offset in X + * (probably zero). + * + * @return X value + */ + public double getX() { + return this.gameobject.getX() + this.dx; + } + + + /** + * returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + * (probably zero). + * + * @return Y value + */ + public double getY() { + return this.gameobject.getY() + this.dy; + } + + /** + * returns the internal unique name + * + * @return the String with the name + */ + public String getId() { + return id; + } + + + /** + * setter for corresponding GameObject + * + * @param gameObject to be saved in attribute + */ + public void setObject(GameObject gameObject) { + this.gameobject = gameObject; + } + + /** + * setter for GameController + * + * @param controller to be saved in attribute + */ + public void setController(ObjectController controller) { + this.controller = controller; + } + + /** + * setter for Playground instance this collider belongs to + * + * @param playground instance to be stored in attribute + */ + public void setPlayground(Playground playground) { + this.playground = playground; + } + + /** + * checks the collission with another collider instance. + * + * @param other the instance to compare to + * @return true if the colliders collide (touch or overlap) + */ + abstract public boolean collidesWith(Collider other); + + +} diff --git a/prog2-codebase/GameProject/src/collider/RectCollider.java b/prog2-codebase/GameProject/src/collider/RectCollider.java new file mode 100644 index 0000000..c781c8b --- /dev/null +++ b/prog2-codebase/GameProject/src/collider/RectCollider.java @@ -0,0 +1,122 @@ +package collider; + +import gameobjects.*; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** a {@link Collider} for Rectangles, usually used for {@link RectObject} instances. + * @see gameobjects.RectObject#generateColliders() + */ +public class RectCollider extends Collider { + + //double x; + //double y; + double w, h; + + + private static Logger logger = LogManager.getLogger(RectCollider.class); + + /** + * initializes this RectCollider. + * calls superclass constructor of {@link Collider#Collider(String, GameObject)} with params String id and GameObject o. + * + * @param id String unique name for this RectCollider + * @param o GameObject instance this RectCollider belongs to (cannot be null) + * @param w width in pixels for the collider dimensions (> 0) + * @param h height in pixels for the collider dimensions (>0) + */ + public RectCollider(String id, GameObject o, double w, double h) { + super(id, o); + this.w = w; + this.h = h; + } + + public String toString() { + return " " + w + " " + h + " "; + } + + /** + * checks collision with other Collider, which needs to be a RectCollider, too. + * @param other RectCollider (is casted) to calculate collision with + * @return true if collission is detected + */ + public boolean checkCollisionRectRect(Collider other) { + RectCollider r1 = this; + RectCollider r2 = (RectCollider) other; + + if ((((r1.getX() + r1.w / 2.) >= (r2.getX() - r2.w / 2.)) && ((r1.getX() + r1.w / 2.) <= (r2 + .getX() + r2.w / 2.))) + || (((r2.getX() + r2.w / 2.) >= (r1.getX() - r1.w / 2.)) && ((r2.getX() + r2.w / 2.) <= (r1 + .getX() + r1.w / 2.)))) { + if ((((r1.getY() + r1.h / 2.) >= (r2.getY() - r2.h / 2.)) && ((r1.getY() + r1.h / 2.) <= (r2 + .getY() + r2.h / 2.))) + || (((r2.getY() + r2.h / 2.) >= (r1.getY() - r1.h / 2.)) && ((r2.getY() + r2.h / 2.) <= (r1 + .getY() + r1.h / 2.)))) { + return true; + } + } + return false; + } + + /** + * checks collision with other Collider, which needs to be a CircleCollider + * @param other CircleCollider (is casted) to calculate collision with + * @return true if collission is detected + */ + public boolean checkCollisionRectCirc(Collider other) { + RectCollider r = this; + CircleCollider c = (CircleCollider) (other); + double circleDistX = Math.abs(c.getX() - (r.getX() )); + double circleDistY = Math.abs(c.getY() - (r.getY() ) ); + + logger.trace("c.x:"+c.x+" "+"c.y:"+c.y+" "+"c.r:"+c.r+" "+"r.x:"+r.getX()+" "+"r.y:"+r.getY()+" "+"r.w:"+r.w+" "+"r.h:"+r.h+" "+"circleDistX:"+circleDistX+" "+"circleDistY:"+circleDistY); + + if (circleDistX > (r.w / 2 + c.r)) + return false; + if (circleDistY > (r.h / 2 + c.r)) + return false; + + if (circleDistX <= (r.w / 2)) { + logger.trace("Collision Rect with circle"); + return true; + } + if (circleDistY <= (r.h / 2)) { + logger.trace("Collision Rect with circle (second)"); + return true; + } + + double cornerDistSqr = Math.pow(circleDistX - r.w / 2, 2) + Math.pow(circleDistY - r.h / 2, 2); // Satz + // des + // Pythagoras + return (cornerDistSqr <= c.r * c.r); // falls true zurueckgegeben: Kollision + } + + + + @Override + public boolean collidesWith(Collider other) { + + // rect circ + try { + return checkCollisionRectCirc(other); + } catch (Exception e) { + // do nothing + } + + // rect rect + try { + return checkCollisionRectRect(other); + } catch (Exception e) { + // do nothing + } + + try { + return other.collidesWith(this); + } catch (Exception e) { + // do nothing + } + + throw new RuntimeException("Collider type not implemented!"); + } + +} diff --git a/prog2-codebase/GameProject/src/controller/CollisionAwareEgoController.java b/prog2-codebase/GameProject/src/controller/CollisionAwareEgoController.java new file mode 100644 index 0000000..12ccf29 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/CollisionAwareEgoController.java @@ -0,0 +1,84 @@ +package controller; + +import playground.*; +import gameobjects.*; +import java.util.*; +import java.awt.event.*; +import java.io.File; + + +/** + * An EgoController which cannot move through obstacle objects (is collission aware). Only respects + * GameObjects that have the String 'obstacle' in their name. + * + */ +public class CollisionAwareEgoController extends EgoController { + + double savex, savey, savevx, savevy; + double lastSpaceAt = -1; + private File shot = null; + + + /** + * + * @param egoRad radius of ego object to be used. + */ + public CollisionAwareEgoController(double egoRad) { + super(egoRad); + } + + /** + * + * @param egoRad radius of ego object to be used. + * @param soundOnShot WAV file to be played on shot + */ + public CollisionAwareEgoController(double egoRad, File soundOnShot) { + super(egoRad); + this.shot = soundOnShot; + } + + public void saveDynamicState() { + this.savex = this.getX(); + this.savey = this.getY(); + this.savevx = this.getVX(); + this.savevy = this.getVY(); + } + + + public void restoreDynamicState() { + this.setX(savex); + this.setY(savey); + this.setVX(savevx); + this.setVY(savevy); + } + + + public boolean stopObject() { + boolean s = super.stopObject(); + + Playground pg = this.getPlayground(); + + LinkedList obstacles = pg.collectObjects("obstacle", false); + + this.saveDynamicState(); + this.applySpeedVector(); + + for (GameObject ob : obstacles) { + if (ob.collisionDetection(this.gameObject)) { + this.restoreDynamicState(); + return true; + } + } + this.restoreDynamicState(); + return s; + } + + public void onSpace(KeyEvent e, GameObject ego) { + double cgt = ego.getGameTime(); + if ((cgt - this.lastSpaceAt) > 0.1) { + super.onSpace(e, ego); + Music.music(this.shot); + } + + } +} diff --git a/prog2-codebase/GameProject/src/controller/EgoController.java b/prog2-codebase/GameProject/src/controller/EgoController.java new file mode 100644 index 0000000..85f7a16 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/EgoController.java @@ -0,0 +1,216 @@ +package controller; + +import java.awt.Color; +import java.awt.event.KeyEvent; +import playground.*; +import gameobjects.*; +import java.util.*; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * Controller using key events for up, down, left, right and space (shooting) to control the ego + * object behavior. + */ +public class EgoController extends ObjectController { + // either rad is zero or width/height is zero (guaranteed by constructors) + private double rad = 0; + private double width = 0; + private double height = 0; + + private Integer pressedKey = null; + private Integer lastPressedKey = null; + private static Logger logger = LogManager.getLogger(EgoController.class); + + + /** + * constructor that gives the ego controller a radius to stop the ego object when it reaches the level boundaries. + * @param egoRad radius to use as a boundary stop for level borders (usually use the same dimensions as your ego object) + */ + public EgoController(double egoRad) { + this.rad = egoRad; + } + + /** + * constructor that gives the ego controller a width and height to stop the ego object when it reaches the level boundaries. + * @param width width to use as a boundary stop for level borders (usually use the same dimensions as your ego object) + * @param height height to use as a boundary stop for level borders (usually use the same dimensions as your ego object) + */ + public EgoController(double width, double height) { + this.width = width; + this.height = height; + } + + + public void onUp(KeyEvent kc, GameObject ego) { + ego.setVX(0.0); + ego.setVY(-SpaceInvadersLevel.EGOSPEED); + } + + public void onDown(KeyEvent kc, GameObject ego) { + ego.setVX(0.0); + ego.setVY(SpaceInvadersLevel.EGOSPEED); + } + + public void onLeft(KeyEvent kc, GameObject ego) { + ego.setVY(0.0); + ego.setVX(-SpaceInvadersLevel.EGOSPEED); + } + + public void onRight(KeyEvent kc, GameObject ego) { + ego.setVY(0.0); + ego.setVX(SpaceInvadersLevel.EGOSPEED); + } + + public void onStop(KeyEvent kc, GameObject ego) { + ego.setVY(0.0); + ego.setVX(0.0); + ego.setComponentProperty("controller", "setDummy", "NEW"); + ego.setComponentProperty("controller", "setDummy2", "XXX"); + } + + + /** checks the position and respects level boundaries and own radius or width/height set on constructor. + * + * @return true if the object reached the boundaries of the level, false otherwise + */ + public boolean stopObject() { + // check whether ego object is at level boundaries + // can use radius (rad) and width or height in one check as either rad or width/height is zero. + int pgSizeX = this.getPlayground().getSizeX(); + int pgSizeY = this.getPlayground().getSizeY(); + double ts = this.getTimestep(); + if (this.getX() + rad + (width/2d) + this.getVX() * ts >= pgSizeX + || this.getX() - rad - (width/2d) + this.getVX() * ts < 0) { + return true; + } + if (this.getY() + rad + (height/2d) + this.getVY() * ts >= pgSizeY + || this.getY() - rad - (height/2d) + this.getVY() * ts < 0) { + return true; + } + return false; + + } + + + /** behavior for shooting on key space + * + * @param e KeyEvent of the space key + * @param ego EgoObject instance (used to determine position of shot object's start) + */ + public void onSpace(KeyEvent e, GameObject ego) { + pressedKey = lastPressedKey; + lastPressedKey = null; + + // create unique name for object + // read Flag nextShot read (if not existing already it will be set) + // it will be updated by 1 and saved + Integer nextShot = + (Integer) this.getPlayground().getOrCreateLevelFlag("nextShot", Integer.valueOf(0)); + String shotName = "simpleShot" + nextShot++; + this.getPlayground().setLevelFlag("nextShot", nextShot); + + SimpleShotController simpleshot = new SimpleShotController(); + GameObject ss = new RectObject(shotName, this.getPlayground(), ego.getX(), ego.getY(), 0, + -1. * SpaceInvadersLevel.SHOTSPEED, 4, 12, Color.CYAN).addController(simpleshot); + ss.generateColliders(); + this.getPlayground().addObject(ss); + } + + + /** + * updates position based on key events (mouse currently ignored) + */ + public void updateObject() { + + logger.trace("Playground inst is"+this.getPlayground()) ; + Stack keyEvents = this.getPlayground().getKeyEvents(); + + GameObject ego = this.gameObject; + + while (!keyEvents.isEmpty()) { + + KeyEvent e = keyEvents.pop(); + boolean pressed = false; + boolean released = true; + int kc = e.getKeyCode(); + + if (e.paramString().indexOf("PRESSED") >= 0) { + pressed = true; + released = false; + } + + /** + * Generelle Idee: Wenn eine Taste gedrückt wird wird sie gespeichert. wenn die zuvor + * gespeicherte Taste wieder losgelassen wird stoppt das Ego-Objekt. Falls vor dem Loslassen + * eine andere Taste gedrückt wird, wird diese gespeichert und die alte vergessen. Dh das + * loslassen der alten Taste stoppt das Objekt nicht. Spezialfall: space, das loslassen von + * space stoppt das Objekt nicht! + */ + + if (pressed == true) { + lastPressedKey = pressedKey; + pressedKey = kc; + } + + /** + * Nur eine losgelassene Taste die auch vorher gedrückt wurde stoppt das Objekt. Eine + * losgelassene Taste die nicht vorher gedrückt wurde bzw vergessen wurde stoppt das Objekt + * nicht + */ + if (released == true) { + if (pressedKey != null) { + if (pressedKey.equals(kc)) { + ego.setVX(0); + ego.setVY(0); + pressedKey = null; + } + } + continue; + } + + if (kc == KeyEvent.VK_LEFT) { + this.onLeft(e, ego); + } + + if (kc == KeyEvent.VK_RIGHT) { + this.onRight(e, ego); + } + + if (kc == KeyEvent.VK_UP) { + this.onUp(e, ego); + } + + if (kc == KeyEvent.VK_DOWN) { + this.onDown(e, ego); + } + + // stop + if (kc == KeyEvent.VK_Z) { + this.onStop(e, ego); + + } + + + // shot + if (kc == KeyEvent.VK_SPACE) { + // space is not registered! Releasing space does not stop the egoobject + this.onSpace(e, ego); + } + } + + + boolean stop = this.stopObject(); + + if (stop) { + this.setVX(0); + this.setVY(0); + } + + // updateSpeed and position + applySpeedVector(); + + } + + +} diff --git a/prog2-codebase/GameProject/src/controller/EnemyController.java b/prog2-codebase/GameProject/src/controller/EnemyController.java new file mode 100644 index 0000000..9e6aa6c --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/EnemyController.java @@ -0,0 +1,37 @@ +package controller; + + +import playground.Playground; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * This class controls the space invaders. + */ +public class EnemyController extends ObjectController { + + private static Logger logger = LogManager.getLogger(EnemyController.class); + + @Override + public void updateObject() { + logger.trace("updatre" + gameObject.getId()); + if ((gameObject.getX() > this.getPlayground().getSizeX() * 0.9) && (gameObject.getVX() > 0)) { + logger.trace("toleft!" + gameObject.getX()); + gameObject.setVX(-this.getVX()); + } + if ((gameObject.getX() < this.getPlayground().getSizeX() * 0.1) && (gameObject.getVX() < 0)) { + logger.trace("toright!" + gameObject.getX()); + gameObject.setVX(-this.getVX()); + } + + // if it reaches the bottom, delete it and deduct points + if (gameObject.getY() >= this.getPlayground().getSizeY()) { + this.getPlayground().deleteObject(gameObject.getId()); + // add to points counter + Integer pts = (Integer) Playground.getGlobalFlag("points"); + Playground.setGlobalFlag("points", pts - 200); + } + + applySpeedVector(); + } +} diff --git a/prog2-codebase/GameProject/src/controller/FallingStarController.java b/prog2-codebase/GameProject/src/controller/FallingStarController.java new file mode 100644 index 0000000..45ef627 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/FallingStarController.java @@ -0,0 +1,24 @@ +package controller; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + + +/** + * Controls background stars. When they touch the bottom of the display they reappear on top. + */ +public class FallingStarController extends ObjectController { + int rad = 3; + private static Logger logger = LogManager.getLogger(FallingStarController.class); + + + @Override + public void updateObject() { + logger.trace( + "+" + this.gameObject.getId() + " HO " + this.gameObject + "/" + this.getPlayground()); + if (this.getY() + rad >= this.getPlayground().getSizeY()) { + this.setY(10); + } + applySpeedVector(); + } +} diff --git a/prog2-codebase/GameProject/src/controller/LimitedTimeController.java b/prog2-codebase/GameProject/src/controller/LimitedTimeController.java new file mode 100644 index 0000000..ee9a54a --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/LimitedTimeController.java @@ -0,0 +1,36 @@ +package controller; + +/** + * Controls and abject that is deleted after a lifetime specified in the constructor, and when it + * leaves the display. + */ +public class LimitedTimeController extends ObjectController { + int rad = 3; + double g0 = -1; + double duration = 0; + + /** + * Constructor. + * + * @param g0 int initial game time at creation + * @param duration int duration in seconds + */ + public LimitedTimeController(double g0, double duration) { + this.g0 = g0; + this.duration = duration; + } + + @Override + public void updateObject() { + double gameTime = this.getPlayground().getGameTime(); + applySpeedVector(); + + if (gameObject.getY() >= getPlayground().getSizeY() || gameObject.getY() < 0 + || gameObject.getX() >= getPlayground().getSizeX() || gameObject.getX() < 0 + || (gameTime - g0) > duration) { + + this.getPlayground().deleteObject(this.gameObject.getId()); + } + } + +} diff --git a/prog2-codebase/GameProject/src/controller/MineController.java b/prog2-codebase/GameProject/src/controller/MineController.java new file mode 100644 index 0000000..5aa7e83 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/MineController.java @@ -0,0 +1,46 @@ +package controller; + +import gameobjects.GameObject; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class MineController extends ObjectController { + int rad = 3; + + double xSpeed = 0.; + double lineSpeed = 0; + private static Logger logger = LogManager.getLogger(MineController.class); + + + public MineController(double lineSpeed) { + this.lineSpeed = lineSpeed; + } + + @Override + public void updateObject() { + + if (gameObject.getY() >= this.getPlayground().getSizeY() - 10) { + this.gameObject.setVY(0); + if (xSpeed == 0.) { + GameObject ego = getPlayground().getObject("ego"); + double egoXPos = ego.getX(); + if (egoXPos > this.gameObject.getX()) { + xSpeed = 50; + } else { + xSpeed = -50; + } + this.gameObject.setVX(xSpeed); + + } + this.gameObject.setVX(xSpeed); + + } + if (this.gameObject.getX() < 0 || (this.gameObject.getX() > this.getPlayground().getSizeX())) { + logger.debug("deleting" + this.gameObject.getId()); + getPlayground().deleteObject(this.gameObject.getId()); + } + + applySpeedVector(); + } +} diff --git a/prog2-codebase/GameProject/src/controller/ObjectController.java b/prog2-codebase/GameProject/src/controller/ObjectController.java new file mode 100644 index 0000000..dd16f16 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/ObjectController.java @@ -0,0 +1,110 @@ +package controller; + +import gameobjects.GameObject; +import playground.Playground; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * Class that controls the LOGICAL behavior of an object independently of how it is displayed or + * drawn. The most important method here is {@link #updateObject}: this method is, by various + * indirections, called exactly once per game time step for every object that is on the playground. + * It has, by virtue of the member variables {@link #gameObject} full access to + *
        + *
      • the object it is controlling + *
      • the playground this object belongs to + *
      + * Typically, updateObject would check whether an object leaves the screen to react appropriately. + * In that case the object can be marked for deletion (by adding it to the flag "deleted" that is + * always defined for any playground), but of course other reactions are possible like rebounding, + * emerging on the other side, ... + */ + +public abstract class ObjectController { + protected GameObject gameObject = null; + protected String dummy = ""; + + private static Logger logger = LogManager.getLogger(ObjectController.class); + + public void setObject(GameObject gameObject) { + this.gameObject = gameObject; + } + + + public void setDummy(String x) { + logger.debug("DUMMY called!!"); + this.dummy = x; + logger.debug("DUMMY is now:" + dummy); + } + + /** + * Is called once every game time step by the game itself. NEVER call this directly, not + * necessary!
      + * The method can do whatever it likes, including nothing. The attribute {@link #gameObject} + * contains a reference to the controlled object, which allows access to the Playground the object + * belongs to (useful for getting the pixel size in x and y of the playing field.
      + * Recommended: when implementing this method, call at the end + * {@link #applySpeedVector() } method. This is a helper method that sets the new x,y coordinates + * for the {@link #gameObject} correctly. + */ + public abstract void updateObject(); + + /** + * Convenience method: simply moves the object forward one step from its present position, using + * its present speed. + */ + public void applySpeedVector() { + double ts = this.getPlayground().getTimestep(); + this.setX(this.getX() + this.getVX() * ts); + gameObject.setY(this.getY() + this.getVY() * ts); + } + + + public double getTimestep() { + return this.gameObject.getPlayground().getTimestep(); + } + + public double getX() { + return this.gameObject.getX(); + } + + public double getY() { + return this.gameObject.getY(); + } + + public double getVX() { + return this.gameObject.getVX(); + } + + public double getVY() { + return this.gameObject.getVY(); + } + + public void setX(double x) { + this.gameObject.setX(x); + } + + + public void setY(double y) { + this.gameObject.setY(y); + } + + public void setVX(double vx) { + this.gameObject.setVX(vx); + } + + public void setVY(double vy) { + this.gameObject.setVY(vy); + } + + public Playground getPlayground() { + return this.gameObject.getPlayground(); + } + + public void setPlayground(Playground playground) { + this.gameObject.setPlayground(playground); + } + + + +} diff --git a/prog2-codebase/GameProject/src/controller/SimpleShotController.java b/prog2-codebase/GameProject/src/controller/SimpleShotController.java new file mode 100644 index 0000000..03f3a4b --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/SimpleShotController.java @@ -0,0 +1,16 @@ +package controller; + +public class SimpleShotController extends ObjectController { + int rad = 3; + + @Override + public void updateObject() { + if (gameObject.getY() < 0) { + // LinkedList deleteList = (LinkedList) playground.getFlag("delete"); + // deleteList.add(gameObject.getId()); + getPlayground().deleteObject(this.gameObject.getId()); + } else { + applySpeedVector(); + } + } +} diff --git a/prog2-codebase/GameProject/src/controller/ZickZackController.java b/prog2-codebase/GameProject/src/controller/ZickZackController.java new file mode 100644 index 0000000..62a1410 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/ZickZackController.java @@ -0,0 +1,32 @@ +package controller; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class ZickZackController extends EnemyController { + protected double g0; + protected double dt; + protected double lastMod = -1; + + private static Logger logger = LogManager.getLogger(ZickZackController.class); + + public ZickZackController(double gameTime, double dt) { + super(); + this.dt = dt; + this.g0 = gameTime; + } + + public void updateObject() { + double gameTime = this.getPlayground().getGameTime(); + logger.trace("current Object x: "+gameObject.getX()); + double mod = (gameTime - this.g0) % this.dt; + if (mod < lastMod) { + gameObject.setVX(-1.0 * gameObject.getVX()); + logger.trace("inverting VX"); + } + lastMod = mod; + + super.updateObject(); + + } +} diff --git a/prog2-codebase/GameProject/src/controller/package-info.java b/prog2-codebase/GameProject/src/controller/package-info.java new file mode 100644 index 0000000..b2245e7 --- /dev/null +++ b/prog2-codebase/GameProject/src/controller/package-info.java @@ -0,0 +1,11 @@ +/** + * The controller package contains Object controllers that govern an objects behavior, without being + * involved in its collision or drawing properties. Object controllers react to user actions/inputs + * and govern for example the movement of {@link gameobjects.GameObject} instances. They can access + * their parent objects' properties and, by indirection, the properties and methods of the + * associated level.
      + * Controllers should be designed in such a way that they implement behavior that is + * level-independent. All level-dependent behavior should be implemented in + * {@link playground.Playground#applyGameLogic}. + */ +package controller; diff --git a/prog2-codebase/GameProject/src/gameobjects/AnimatedGameobject.java b/prog2-codebase/GameProject/src/gameobjects/AnimatedGameobject.java new file mode 100644 index 0000000..571f59e --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/AnimatedGameobject.java @@ -0,0 +1,40 @@ +package gameobjects; + +import playground.Playground; +import playground.Animation; +import collider.RectCollider; +import rendering.*; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + + +public class AnimatedGameobject extends GameObject { + + protected AnimationArtist animArtist; + private static Logger logger = LogManager.getLogger(AnimationArtist.class); + + + // auto-generates collider according to box width/height + public GameObject generateColliders() { + logger.debug("Created animated Obj "+ this.animArtist.getW()+" "+this.animArtist.getH()) ; + double w = this.animArtist.getW() ; + double h = this.animArtist.getH() ; + this.addCollider(new RectCollider("RectColl_" + this.id, this, w, + h)) ; + + logger.info("ANIMGO-COLL ID="+this.getId()+" WH= "+w+"/"+h) ; + return this ; + } + + + public AnimatedGameobject(String id, Playground pg, double x, double y, double vx, double vy, + double scale, Animation anim, double t0, String abspielmodus) { + super(id, pg, x, y, vx, vy); // Konstruktor-Aufruf GameObject + + this.artist = new AnimationArtist(this, anim, t0, abspielmodus, scale); + this.animArtist = (AnimationArtist) (this.artist); + + } + + +} diff --git a/prog2-codebase/GameProject/src/gameobjects/EgoObject.java b/prog2-codebase/GameProject/src/gameobjects/EgoObject.java new file mode 100644 index 0000000..442cbec --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/EgoObject.java @@ -0,0 +1,26 @@ +package gameobjects; + + +import java.awt.Color; +import collider.*; +import playground.Playground; +import rendering.*; + +public class EgoObject extends GameObject { + + double egoRad = 0; + + public EgoObject(String id, Playground pg, double x, double y, double vx, double vy, + double egoRad) { + super(id, pg, x, y, vx, vy); + this.egoRad = egoRad; + this.artist = new CircleArtist(this, egoRad, Color.WHITE); + } + + public GameObject generateColliders() { + CircleCollider coll = new CircleCollider("coll", this, this.egoRad); + this.addCollider(coll); + return this; + } + +} diff --git a/prog2-codebase/GameProject/src/gameobjects/FallingStar.java b/prog2-codebase/GameProject/src/gameobjects/FallingStar.java new file mode 100644 index 0000000..d5b0e1a --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/FallingStar.java @@ -0,0 +1,26 @@ +package gameobjects; + +import java.awt.Color; +import java.util.LinkedList; +import collider.*; +import playground.Playground; +import rendering.*; + +public class FallingStar extends GameObject { + + + protected double rad = -1; + + + public FallingStar(String id, Playground playground, double x, double y, double vx, double vy, + Color color, double rad) { + super(id, playground, x, y, vx, vy); + this.rad = rad; + LinkedList cols = new LinkedList(); + CircleCollider cc = new CircleCollider("cc", this, rad); + cols.add(cc); + setColliders(cols); + this.artist = new CircleArtist(this, rad, color); + } + +} diff --git a/prog2-codebase/GameProject/src/gameobjects/GameObject.java b/prog2-codebase/GameProject/src/gameobjects/GameObject.java new file mode 100644 index 0000000..8568b11 --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/GameObject.java @@ -0,0 +1,377 @@ +package gameobjects; + +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.util.LinkedList; +import java.lang.reflect.*; +import rendering.*; +import collider.Collider; +import controller.ObjectController; +import playground.Playground; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * The class {@link GameObject} represents a (possibly animated) object appearing in a level of the + * game. It is therefore attached to an instance of the class {@link Playground}. A GameObject has + * at least the following properties: + *
        + *
      • 2D screen position + *
      • 2D speed + *
      • a name that is unique within a certain {@link Playground}
        + *
      • a reference to the {@link Playground} object it belongs to
        + *
      • a reference to an instance of {@link controller.ObjectController} that handles the movement + * logic of the object
        + *
      • a (circular) radius for simple collision checking. This may be handled differently in + * subclasses
        + *
      + * The main task of GameObject, or its subclasses, is to draw the object on the screen, which is + * handles by the {@link #draw(Graphics2D)} method. It is this method that must be redefined if a + * new appearance should be realized. For introducing new behavior, it is sufficient to supply a + * different {@link controller.ObjectController} instance when constructing a GameObject. + */ +public abstract class GameObject { + + public static final int RADIUS = 0; + public static final int RECTANGLE = 1; + public static final int MASK = 2; + + protected Artist artist = null; + + public String id = null; + protected double x = 0; + protected double vx = 0; + protected double y = 0; + protected double vy = 0; + protected BufferedImage mask = null; // UNDONE implement usage of mask + protected boolean active = true; + // public int collisionMode = GameObject.RADIUS; + protected Playground playground = null; + + private ObjectController controller = null; + public LinkedList scol; + + private static Logger logger = LogManager.getLogger(GameObject.class); + + /** + * Constructor to initialize a GameObject, respectively set the current {@link Playground} + * instance this GameObject belongs to. + * + * @param id unique ID for this GameObject (should not be null or empty String) + * @param playground the Playground the GameObject belongs to (should not be null) + * @param x initial screen position in direction horizontal (positive value including zero) + * @param y initial screen position in direction vertical (positive value including zero) + * @param vx initial speed (velocity) in direction horizontal (can be negative, zero, positive) + * @param vy initial speed (velocity) in direction horizontal (can be negative, zero, positive) + */ + public GameObject(String id, Playground playground, double x, double y, double vx, double vy) { + setX(x); + setY(y); + setVX(vx); + setVY(vy); + this.id = id; + this.controller = null; + this.scol = new LinkedList(); + this.setPlayground(playground); + } + + /** + * Constructor to initialize a GameObject, respectively set the current Playground instance this + * GameObject belongs to. + * + * @param id unique ID for this GameObject (should not be null or empty String) + * @param playground the Playground the GameObject belongs to (should not be null) + * @param controller controller instance to be used for this GameObject (can be null) + * @param x initial screen position in direction horizontal (positive value including zero) + * @param y initial screen position in direction vertical (positive value including zero) + * @param vx initial speed (velocity) in direction horizontal (can be negative, zero, positive) + * @param vy initial speed (velocity) in direction horizontal (can be negative, zero, positive) + */ + public GameObject(String id, Playground playground, ObjectController controller, double x, + double y, double vx, double vy) { + this(id, playground, x, y, vx, vy); + this.controller = controller; + if (this.controller != null) { + this.controller.setObject(this); + this.controller.setPlayground(playground); + } + } + + /** + * sets colliders. + * + * @param l LinkedList of Colliders. + */ + public void setColliders(LinkedList l) { + this.scol = l; + } + + /** + * generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + * to be overridden by subclasses. + * + * @return instance of this GameObject (this). + */ + public GameObject generateColliders() { + return this; + } + + /** + * Sets the controller to use for this GameObject's logical behavior. + * + * @param c instance to be used. + * @return the current instance (this). + */ + public GameObject addController(ObjectController c) { + this.controller = c; + this.controller.setObject(this); + this.controller.setPlayground(playground); + return this; + } + + /** + * Sets the artist to be used for drawing the object onto visible canvas area. + * + * @param a instance to be used for calling {@link rendering.Artist#draw(Graphics2D)}. + * @return the current instance (this). + */ + public GameObject addArtist(Artist a) { + this.artist = a; + return this; + } + + /** + * saves the collider in the internal list of Colliders to be used for this GameObject. + * + * @param c instance to be added to internal list + */ + public void addCollider(Collider c) { + if (this.scol == null) { + this.scol = new LinkedList(); + } + this.scol.add(c); + } + + public Playground getPlayground() { + return playground; + } + + public void setPlayground(Playground playground) { + this.playground = playground; + } + + /** + * calls via reflection a method of a component if this GameObjects instance and provides the + * given value as String parameter. + * + * @param comp class name of GameObject component. Currently only "controller" is supported, + * otherwise nothing happens. + * @param property method name of the component to call. + * @param value argument to pass to the method as String parameter. + */ + public void setComponentProperty(String comp, String property, Object value) { + if (comp.equals("controller")) { + Class clO = this.controller.getClass(); + for (Method m : clO.getMethods()) { + if (m.getName().indexOf(property) != -1) { + logger.debug("Method " + property + " found!!"); + try { + m.invoke(this.getObjectController(), value); + } catch (Exception e) { + } + } + } + + } + } + + public void setObjectFlag(String flag, Object value) { + this.playground.setLevelFlag(this.id + "/" + flag, value); + } + + + public Object getObjectFlag(String flag) { + return this.playground.getLevelFlag(this.id + "/" + flag); + } + + + public Object getOrCreateObjectFlag(String flag, Object createValue) { + return this.playground.getOrCreateLevelFlag(this.id + "/" + flag, createValue); + } + + + + public boolean isActive() { + return active; + } + + + public GameObject setActive(boolean flag) { + this.active = flag; + return this; + } + + /** + * return the unique object ID. + * + * @return unique object ID + */ + public String getId() { + return id; + } + + /** + * gets the screen X position. + * + * @return screen x position + */ + public double getX() { + return x; + } + + /** + * gets the screen Y position. + * + * @return screen Y position + */ + public double getY() { + return y; + } + + /** + * gets the screen X speed in pixels per frame. + * + * @return screen x speed + */ + public double getVX() { + return vx; + } + + /** + * gets the screen Y speed in pixels per frame. + * + * @return screen y speed + */ + public double getVY() { + return vy; + } + + /** + * set screen x position. + * + * @param x new position + */ + public void setX(double x) { + if (this.active == true) { + this.x = x; + } + } + + /** + * set screen y position. + * + * @param y new position + */ + public void setY(double y) { + if (this.active == true) { + this.y = y; + } + } + + /** + * set screen x speed in pixel per frame + * + * @param vx new x speed + */ + public void setVX(double vx) { + if (this.active == true) { + this.vx = vx; + } + } + + /** + * set screen y speed in pixel per frame. + * + * @param vy new y speed. + */ + public void setVY(double vy) { + if (this.active == true) { + this.vy = vy; + } + } + + /** + * Sets a new object controller (replaces any former one). + * + * @param controller An instance of {@link controller.ObjectController} or one of its subclasses. + */ + public void setObjectController(ObjectController controller) { + this.controller = controller; + } + + + /** + * Access to object controller. + * + * @return the controller for this object. + */ + public ObjectController getObjectController() { + return this.controller; + } + + + public double getGameTime() { + return this.playground.getGameTime(); + } + + + + /** + * Collision detection implemented by iteration through the own list of {@link collider.Collider} + * and calling their {@link collider.Collider#collidesWith(Collider)} method to check collision + * with the given parameter instance of other {@link GameObject}. + * + * @param other instance of the other GameObject to check collision with + * @return true if collision is detected, false otherwise + */ + public boolean collisionDetection(GameObject other) { + if (this.scol == null) { + return false; + } + for (Collider c : this.scol) { + logger.trace(other.id); + for (Collider o : other.scol) { + if (c.collidesWith(o)) { + logger.trace(c.id + " " + o.id); + return true; + } + } + } + return false; + + } + + /** + * triggers this GameObjects own controller (if set) to update the object. + * + * @see GameObject#controller + */ + public void updateObject() { + if (this.controller != null) { + controller.updateObject(); + } + } + + /** + * Draws the object in its current state. Is called by the game engine, should NOT be called + * otherwise. + * + * @param g object that has all the necessary drawing functionalities + */ + public void draw(Graphics2D g) { + if (this.artist != null) { + this.artist.draw(g); + } + } + +} diff --git a/prog2-codebase/GameProject/src/gameobjects/RectObject.java b/prog2-codebase/GameProject/src/gameobjects/RectObject.java new file mode 100644 index 0000000..78efdb5 --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/RectObject.java @@ -0,0 +1,74 @@ +package gameobjects; + +import java.awt.Color; +import collider.RectCollider; +import playground.Playground; +import rendering.RectArtist; + +/** + * A rectangle object.
      + * If {@link #generateColliders()} is called, it generates a RectCollider with id-prefix + * "shotcollider_" and registers it for this RectObject. + * + */ +public class RectObject extends GameObject { + + /** width in pixels of the RectObject (> 0) */ + protected double width; + /** height in pixels of the RectObject (> 0) */ + protected double height; + + /** + * Initializes the RectObject with a suitable RectArtist for drawing the RectObject. + * + * @param id String unique name to be used. + * @param pg {@link Playground} instance this RectObject belongs to (the level it belongs to). + * @param x position in horizontal direction in pixels (zero or positive number). + * @param y position in vertical direction in pixels (zero or positive number). + * @param vx speed/velocity in horizontal direction in pixels (negative, zero or positive number). + * @param vy speed/velocity in vertical direction in pixels (negative, zero or positive number). + * @param width in pixels + * @param height in pixels + * @param color solid color for the whole object, used to initialize an instance of + * {@link rendering.RectArtist} used for this RectObject. + */ + public RectObject(String id, Playground pg, double x, double y, double vx, double vy, + double width, double height, Color color) { + super(id, pg, x, y, vx, vy); + + this.width = width; + this.height = height; + + this.artist = new RectArtist(this, width, height, color); + + } + + + /** + * generates a new {@link RectCollider} with id-prefix "shotcollider_" and registers it for 'this' + * [@link RectObject}. The {@link RectCollider} uses the same dimensions ({@link #width} and {@link #height}) as this RectObject. + * + * @return this RectObject itself + */ + public RectObject generateColliders() { + this.scol.add(new RectCollider("shotcollider_" + id, this, this.width, this.height)); + return this; + } + + /** Getter for the width + * + * @return double width value as set by constructor + */ + public double getWidth() { + return this.width; + } + + /** Getter for the height + * + * @return double height value as set by constructor + */ + public double getHeight() { + return this.height; + } + +} diff --git a/prog2-codebase/GameProject/src/gameobjects/TextObject.java b/prog2-codebase/GameProject/src/gameobjects/TextObject.java new file mode 100644 index 0000000..30fca81 --- /dev/null +++ b/prog2-codebase/GameProject/src/gameobjects/TextObject.java @@ -0,0 +1,64 @@ +package gameobjects; + +import java.awt.Color; +import java.util.LinkedList; +import collider.*; +import playground.Playground; +import rendering.*; + +/** + * Convenience Class subclassing {@link GameObject}, directly instanciating {@link TextArtist} a + * subclass of {@link Artist} that draws a text. The controller is left undefined, the collider as + * well. However, a single call to the overwritten method {@link #generateColliders} will in fact + * generate a {@link RectCollider} of just the right size for the text. + * + */ +public class TextObject extends GameObject { + + private String text = null; + protected double rx, ry; + + public String getText() { + return this.text; + } + + /** + * Constructor. + * + * @param id object name + * @param playground containing {@link Playground} instance + * @param x positionx + * @param y positiony + * @param vx speedx + * @param vy speedy + * @param size font size in Pixel + * @param text String to be displayed + * @param textColor text color, see java.awt.Color + */ + public TextObject(String id, Playground playground, double x, double y, double vx, double vy, + String text, int size, Color textColor) { + super(id, playground, x, y, vx, vy); + + this.artist = new TextArtist(this, text, size, textColor); + + this.setColliders(new LinkedList()); + + } + + + public void setText(String s) { + this.text = s; + ((TextArtist) this.artist).setText(s); + } + + public TextObject generateColliders() { + // we need to Cast to TextArtist as we want to access Width and Height of text + TextArtist kruecke = (TextArtist) (this.artist); + + this.scol.clear(); + this.scol.add(new RectCollider("rect", this, kruecke.getTextWidth(), kruecke.getTextHeight())); + return this; + } + + +} diff --git a/prog2-codebase/GameProject/src/log4j2.xml b/prog2-codebase/GameProject/src/log4j2.xml new file mode 100644 index 0000000..87ecf74 --- /dev/null +++ b/prog2-codebase/GameProject/src/log4j2.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/prog2-codebase/GameProject/src/playground/Animation.java b/prog2-codebase/GameProject/src/playground/Animation.java new file mode 100644 index 0000000..5b658c0 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Animation.java @@ -0,0 +1,82 @@ +package playground; + + +import java.awt.image.BufferedImage; + +import javax.imageio.ImageIO; +import java.io.File; +import java.io.*; +import java.io.FileNotFoundException; +import java.util.LinkedList; +import java.util.Locale; +import java.util.Scanner; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Animation { + + public LinkedList fileList = null; + public LinkedList showtimeList = null; + public LinkedList imageList = null; + + private static Logger logger = LogManager.getLogger(Animation.class); + + public Animation(String datName) { + + Scanner scanner; + this.fileList = new LinkedList(); + this.showtimeList = new LinkedList(); + this.imageList = new LinkedList(); + + try { + scanner = new Scanner(new File(datName), "UTF-8"); + + scanner.useLocale(Locale.GERMANY); + + String zeile; + double zeit; + + while (scanner.hasNext()) { + if (scanner.hasNextDouble()) { + zeit = scanner.nextDouble(); + showtimeList.add(zeit); + } else { + zeile = scanner.next(); + Path basePath = Paths.get(datName); + String file = basePath.getParent().toString() + "/" + zeile; + fileList.add(file); + try { + this.imageList.add(ImageIO.read(new File(file))); + logger.info("img added " + file); + + } catch (IOException e) { + logger.warn(file + " not found!!"); + } + + logger.trace(basePath.getParent().toString() + "/" + zeile); + } + } + + scanner.close(); + + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + public LinkedList getFileList() { + return this.fileList; + } + + public LinkedList getShowtimeList() { + return this.showtimeList; + } + + public LinkedList getImageList() { + return this.imageList; + } + +} diff --git a/prog2-codebase/GameProject/src/playground/HighscoreManager.java b/prog2-codebase/GameProject/src/playground/HighscoreManager.java new file mode 100644 index 0000000..920efba --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/HighscoreManager.java @@ -0,0 +1,55 @@ +package playground; + +import java.io.*; +import java.util.Scanner; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + + +// Klasse um Highscore umzusetzen +public class HighscoreManager { + Scanner s; + private static Logger logger = LogManager.getLogger(HighscoreManager.class); + + public HighscoreManager() { + try { + File f = new File("./highscore.txt"); + if (!f.exists()) { + logger.warn("WARNING: Highscore file was not found and reset"); + writeHSToFile(0, -1); + } + s = new Scanner(f); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + } + + public int readHSFromFile() { + if (s.hasNext()) { + int highscore = s.nextInt(); + return highscore; + } + return 0; + } + + public static void writeHSToFile(Integer pts, Integer highscore) { + String highscore2 = String.valueOf(pts); + BufferedWriter bw; + try { + if (pts > highscore) { + FileWriter fw = new FileWriter("./highscore.txt"); + bw = new BufferedWriter(fw); + bw.write(highscore2); + bw.close(); + logger.info("Highscore file was opened and saved score: " + highscore2); + } + } catch (IOException e) { + logger.error("File for Highscore not writeable! Score lost."); + } + } + + public void closeFile() { + s.close(); + } +} diff --git a/prog2-codebase/GameProject/src/playground/Level1.java b/prog2-codebase/GameProject/src/playground/Level1.java new file mode 100644 index 0000000..c14c359 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level1.java @@ -0,0 +1,15 @@ +package playground; + + +/** + * extends {@link SpaceInvadersLevel} with a boring start message + */ +public class Level1 extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Get ready for boring level 1!"; + } + + +} diff --git a/prog2-codebase/GameProject/src/playground/Level2.java b/prog2-codebase/GameProject/src/playground/Level2.java new file mode 100644 index 0000000..e553575 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level2.java @@ -0,0 +1,17 @@ +package playground; + + + +/** + * extends extends {@link SpaceInvadersLevel} with a different startup message. + */ +public class Level2 extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Get ready for level 2!"; + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/Level3.java b/prog2-codebase/GameProject/src/playground/Level3.java new file mode 100644 index 0000000..bf05e18 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level3.java @@ -0,0 +1,40 @@ +package playground; + +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import controller.ObjectController; +import controller.ZickZackController; +import gameobjects.AnimatedGameobject; +import gameobjects.GameObject; + + +/** + * extends {@link SpaceInvadersLevel} with a ZigZack move of the enemies in + * {@link #createSingleEnemy(String, double, double, double, double, ObjectController, double)} and + * sets a different {@link #getStartupMessage()}. + */ +public class Level3 extends SpaceInvadersLevel { + + private static Logger logger = LogManager.getLogger(Level3.class); + + @Override + protected String getStartupMessage() { + return "Get ready for level 3!!!"; + } + + + @Override + protected GameObject createSingleEnemy(String name, double x_enemy, double y_enemy, + double vx_enemy, double vy_enemy, ObjectController enemyController, double gameTime) { + logger.trace("creating enemy [" + name + "] with ZickZackController "); + ObjectController zzController = new ZickZackController(gameTime, 0.5); + GameObject go = new AnimatedGameobject(name, this, x_enemy, y_enemy, vx_enemy, vy_enemy, + ENEMYSCALE, this.enemyAnim, this.getGameTime(), "loop").addController(zzController) + .generateColliders(); + + return go.generateColliders(); + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/Level4.java b/prog2-codebase/GameProject/src/playground/Level4.java new file mode 100644 index 0000000..cfb39b3 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level4.java @@ -0,0 +1,63 @@ +package playground; + +import gameobjects.GameObject; +import controller.LimitedTimeController; +import gameobjects.TextObject; +import java.awt.Color; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + + +/** + * extends extends {@link SpaceInvadersLevel} + *
        + *
      • Hit aliens twice to kill them + *
      • they say AUA when not destroyed + *
      + */ +public class Level4 extends SpaceInvadersLevel { + + /** constant defining the number of shots needed to destroy an enemy */ + public static final int MAX_HITS = 2; + + private static Logger logger = LogManager.getLogger(Level4.class); + + @Override + protected String getStartupMessage() { + return "Jetzt gibts Saures!"; + } + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + double gameTime = this.getGameTime(); + + Object counterFlag = e.getOrCreateObjectFlag("counter", Integer.valueOf(1)); + + int counter = (Integer) counterFlag; + + if (counter >= MAX_HITS) { + logger.trace("enemy was hit before for " + counter + " times, which is above " + + LevelHitTwice.MAX_HITS); + super.actionIfEnemyIsHit(e, shot); + } else { + logger.trace("enemy was hit before for "+counter+" times, which is below "+LevelHitTwice.MAX_HITS); + e.setObjectFlag("counter", Integer.valueOf(counter + 1)); + // spawn a bonus points object + double vx = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVX(); + double vy = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVY(); + logger.trace("creating new TextObject bonus" + e.getId()); + LimitedTimeController bonusTextController = + new LimitedTimeController(gameTime, SpaceInvadersLevel.EXPL_DURATION); + GameObject bonusText = new TextObject("bonus" + e.getId(), this, e.getX(), e.getY(), vx, vy, + "Aua", 20, Color.YELLOW).addController(bonusTextController); + + this.addObject(bonusText); + } + deleteObject(shot.getId()); + + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/Level5.java b/prog2-codebase/GameProject/src/playground/Level5.java new file mode 100644 index 0000000..befa201 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level5.java @@ -0,0 +1,59 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level5 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 160; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 5; + + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "Level5, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level5.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level5.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level5.NR_ENEMIES; + } +} diff --git a/prog2-codebase/GameProject/src/playground/Level6.java b/prog2-codebase/GameProject/src/playground/Level6.java new file mode 100644 index 0000000..08f93bc --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level6.java @@ -0,0 +1,58 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level6 extends SpaceInvadersLevel { + + protected static final double ENEMYSPEEDX = 480; + protected static final double ENEMYSPEEDY = 80; + protected static final int NR_ENEMIES = 12; + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "Level6, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level6.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level6.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level6.NR_ENEMIES; + } +} diff --git a/prog2-codebase/GameProject/src/playground/Level7.java b/prog2-codebase/GameProject/src/playground/Level7.java new file mode 100644 index 0000000..b77dfcc --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Level7.java @@ -0,0 +1,57 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class Level7 extends SpaceInvadersLevel { + protected static final double ENEMYSPEEDX = 800; + protected static final double ENEMYSPEEDY = 140; + protected static final int NR_ENEMIES = 21; + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + super.actionIfEnemyIsHit(e, shot); + System.out.println("AUA!"); + } + + @Override + protected String getStartupMessage() { + return "Level7, get ready!"; + } + + @Override + protected double calcEnemySpeedX() { + return Level7.ENEMYSPEEDX; + } + + @Override + protected double calcEnemySpeedY() { + return Level7.ENEMYSPEEDY; + } + + @Override + protected int calcNrEnemies() { + return Level7.NR_ENEMIES; + } +} diff --git a/prog2-codebase/GameProject/src/playground/LevelBoss.java b/prog2-codebase/GameProject/src/playground/LevelBoss.java new file mode 100644 index 0000000..abff08d --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/LevelBoss.java @@ -0,0 +1,112 @@ +package playground; + +import java.awt.Color; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import controller.EgoController; +import controller.FallingStarController; +import controller.ObjectController; +import gameobjects.AnimatedGameobject; +import gameobjects.EgoObject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.TextObject; + +/** + * Class that realizes all the game logic of a very simple game level. The level contains for now + * only two objects that are {@link GameObject} subclasses: {@link FallingStar} and + * {@link EgoObject}. Functions performed by this class are: + *
        + *
      • initially set up the level, spawn all object etc., in method {@link #prepareLevel} + *
      • React to keyboard commands in method {@link #processKeyEvents(java.util.Stack)} + *
      • define basic object movement rules for all objects in the level in the various + * ObjectController subclasses: {@link EgoController} and {@link FallingStarController}. + *
      + */ +public class LevelBoss extends SpaceInvadersLevel { + + private static int MAX_SHOTS = 10; + private static Logger logger = LogManager.getLogger(LevelBoss.class); + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + + Object counterFlag = e.getOrCreateObjectFlag("counter", Integer.valueOf(1)); + + int counter = (Integer) counterFlag; + + if (counter >= LevelBoss.MAX_SHOTS) { + logger.trace("enemy was hit before for " + counter + " times, which is equal or above " + + LevelHitTwice.MAX_HITS); + super.actionIfEnemyIsHit(e, shot); + } else { + logger.trace("enemy was hit before for " + counter + " times, which is below " + + LevelHitTwice.MAX_HITS); + e.setObjectFlag("counter", Integer.valueOf(counter + 1)); + } + deleteObject(shot.getId()); + } + + + + @Override + double calcEnemyShotProb() { + return 1.5 * this.getTimestep(); + } + + @Override + protected double calcEnemySpeedX() { + return ENEMYSPEEDX * 2; + } + + @Override + protected double calcEnemySpeedY() { + return ENEMYSPEEDY * 2; + } + + @Override + protected int calcNrEnemies() { + return (int) 1; + } + + @Override + protected GameObject createEnemyShotObject(GameObject parentObject, String name, + ObjectController limitedTimeController) { + GameObject ego = this.getObject("ego"); + + double deltax = parentObject.getX() - ego.getX(); + double deltay = parentObject.getY() - ego.getY(); + + double norm = Math.sqrt(deltax * deltax + deltay * deltay); + deltax *= -ENEMYSHOTSPEED / norm; + deltay *= -ENEMYSHOTSPEED / norm; + + logger.trace("Creating EnemyShot as TextObject [" + name + "] in direction " + deltax + "/" + + deltay + " towards ego"); + GameObject to = new TextObject(name, this, parentObject.getX(), parentObject.getY(), deltax, + deltay, "*", 20, Color.GREEN).generateColliders().addController(limitedTimeController); + return to; + + } + + + @Override + protected GameObject createSingleEnemy(String name, double x_enemy, double y_enemy, + double vx_enemy, double vy_enemy, ObjectController enemyController, double gameTime) { + + GameObject go = new AnimatedGameobject(name, this, this.canvasX / 2, 10, vx_enemy, 50, + ENEMYSCALE * 3, this.enemyAnim, this.getGameTime(), "loop").generateColliders() + .addController(enemyController); + + return go; + } + + + @Override + protected String getStartupMessage() { + return "BOSS LEVEL!"; + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/LevelHitTwice.java b/prog2-codebase/GameProject/src/playground/LevelHitTwice.java new file mode 100644 index 0000000..f0fc782 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/LevelHitTwice.java @@ -0,0 +1,60 @@ +package playground; + +import gameobjects.GameObject; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + + + +/** + * extends {@link SpaceInvadersLevel} with 10 enemies that need two shots each to be destroyed. + * + */ + + +public class LevelHitTwice extends SpaceInvadersLevel { + + /** constant defining the number of shots needed to destroy an enemy */ + public static final int MAX_HITS = 2; + + private static Logger logger = LogManager.getLogger(LevelHitTwice.class); + + /** constructor setting internal name to 'hitTwice' */ + public LevelHitTwice() { + super(); + this.level = "hitTwice"; + } + + + @Override + protected String getStartupMessage() { + return "2 shots at alien required!!!"; + } + + @Override + protected int calcNrEnemies() { + return 10; + } + + + + @Override + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + Object counterFlag = e.getOrCreateObjectFlag("counter", Integer.valueOf(1)); + + int counter = (Integer) counterFlag; + + if (counter >= MAX_HITS) { + logger.trace("enemy was hit before for " + counter + " times, which is above " + + LevelHitTwice.MAX_HITS); + super.actionIfEnemyIsHit(e, shot); + } else { + logger.trace("enemy was hit before for "+counter+" times, which is below "+LevelHitTwice.MAX_HITS); + e.setObjectFlag("counter", Integer.valueOf(counter + 1)); + } + deleteObject(shot.getId()); + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/LevelWithBox.java b/prog2-codebase/GameProject/src/playground/LevelWithBox.java new file mode 100644 index 0000000..71f5a5b --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/LevelWithBox.java @@ -0,0 +1,20 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import gameobjects.RectObject; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + addObject(); + } +} diff --git a/prog2-codebase/GameProject/src/playground/Music.java b/prog2-codebase/GameProject/src/playground/Music.java new file mode 100644 index 0000000..17de9af --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Music.java @@ -0,0 +1,48 @@ +package playground; + +import java.io.File; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.FloatControl; + +public class Music { + private static final float volume = 0.02f; // scale 0 silence, 1 no change, 2 double. (linear). + + public static synchronized void music(File track) { + + final File trackname = track; + + new Thread(new Runnable() { + + @Override + public void run() { + while (true) { + + try { + + Clip clip = AudioSystem.getClip(); + AudioInputStream inputstream = AudioSystem.getAudioInputStream(trackname); + clip.open(inputstream); + FloatControl volumeControl = + (FloatControl) clip.getControl(FloatControl.Type.MASTER_GAIN); + if (volumeControl != null) { + volumeControl.setValue(20f * (float) Math.log10(volume)); + } + clip.start(); + + Thread.sleep(clip.getMicrosecondLength() / 1); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + } + + }).start(); + + } + +} diff --git a/prog2-codebase/GameProject/src/playground/Playground.java b/prog2-codebase/GameProject/src/playground/Playground.java new file mode 100644 index 0000000..6346d60 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/Playground.java @@ -0,0 +1,374 @@ +package playground; + +import java.awt.Graphics2D; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.Map; +import java.util.Stack; +import java.awt.event.*; +import gameobjects.GameObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + * graphical representation. In particular, an instance of Playground + *
        + *
      • manages the different moving or static objects in a level (e.g., collisions, adding objects, + * removing objects). This is mainly done by the methods {@link #addObject}, {@link #deleteObject}. + *
      • processes keyboard inputs provided by GameLoop in {@link #processKeyEvents(Stack)} and + * {@link #processMouseEvents(Stack)} + *
      • represents the state of a level represented by flags. Each flag has a name (a String) + * and an arbitrary value of any type. Methods: {@link #setLevelFlag(String, Object)}, + * {@link #getLevelFlag(String)}. As an example, the current score is a flag usually named "points", + * with an Integer as a value. This value can be retrieved and manipulated using the above mentioned + * methods. + *
      + */ +public abstract class Playground { + + public static final int FLAGS_GLOBAL = 1; + public static final int FLAGS_LEVEL = 2; + public static final int FLAGS_ALL = 3; + protected int canvasX = -1; + protected int canvasY = -1; + + /** only one set of objects exists concurrently so this can be static */ + protected static HashMap gameObjects = new HashMap(); + + /** only one set of objects exists concurrently so this can be static */ + protected static HashMap flags = new HashMap(); + + protected String level = ""; + protected double timeStep = 0; + protected double gameTime = 0; + LinkedList addables = new LinkedList(); + LinkedList removables = new LinkedList(); + // HashMap keys ; + Stack keyEvents; + Stack mouseEvents; + + protected boolean pausedFlag = false; + + private static Logger logger = LogManager.getLogger(Playground.class); + + public Playground() { + this.canvasX = -1; + this.canvasY = -1; + } + + // here, the level communicates its size preference to the GameUI + // called automatically + public abstract int preferredSizeX(); + + public abstract int preferredSizeY(); + + /** + * Adds a graphics object to a level. + * + * @param o GameObject The object to be added + */ + public void addObject(GameObject o) { + // gameObjects.put(o.getId(), o); + addables.addLast(o); + } + + /** + * Adds a graphics object to a level. + * + * @param o GameObject The object to be added + */ + public void addObjectNow(GameObject o) { + gameObjects.put(o.getId(), o); + } + + + /** + * Puts objects with a certain substring in their name into a LinkedLisrt and returns them. + * + * @param substr The string that must be part of the object name if object is to be considered + * found. + * @param filterInactive if set true only active objects are considered. + * @return a reference to a LinkedList filled with all objects that have substr in their + * name + */ + public LinkedList collectObjects(String substr, boolean filterInactive) { + LinkedList l = new LinkedList(); + for (Map.Entry entry : Playground.gameObjects.entrySet()) { // Iterator + // usage + GameObject obj = entry.getValue(); + if (obj.getId().contains(substr)) { + if (filterInactive == true) { + if (obj.isActive()) { + l.add(obj); + } + } else { + l.add(obj); + } + } + } + return l; + }; + + + /** + * Removes a graphics object from a level. + * + * @param id String The unique identifier of the object + */ + public void deleteObject(String id) { + // gameObjects.remove(id); + removables.addLast(id); + } + + /** + * Removes a graphics object from a level immediately, CAUTION. + * + * @param id String The unique identifier of the object + */ + public void deleteObjectNow(String id) { + gameObjects.remove(id); + } + + + /** + * Retrieves a graphics object by name. + * + * @param id String Unique id of the object + * @return reference to the requested game object, or null if not found + */ + public GameObject getObject(String id) { + return gameObjects.get(id); + } + + /** + * Sets a level-wide permanent flag. + * + * @param flag String Q unique name in this level. If it exists value is overwritten. + * @param value Object Any Object can be the value of a flag! + */ + + public static void setGlobalFlag(String flag, Object value) { + flags.put("/global/" + flag, value); + } + + public Object setLevelFlag(String flag, Object value) { + flags.put("/" + this.level + "/" + flag, value); + return value; + } + + /** + * mode can be: FLAGS_ALL (all), FLAGS_GLOBAL(global), FLAGs_LEVEL(level) + * + * @param mode can be only one of {@link #FLAGS_GLOBAL} {@link #FLAGS_ALL} or + * {@link #FLAGS_LEVEL } + */ + public void resetFlags(int mode) { + LinkedList delKeys = new LinkedList(); + for (Map.Entry entry : Playground.flags.entrySet()) { + logger.trace(entry.getKey() + " IndexofGlobal = " + entry.getKey().indexOf("/global/")); + if ((mode == FLAGS_GLOBAL) && (entry.getKey().indexOf("/global/") != -1)) { + logger.debug("GLOBAL: scheduling for removal: " + entry.getKey()); + delKeys.add(entry.getKey()); + } else if ((mode == FLAGS_LEVEL) && (entry.getKey().indexOf("/global/") == -1)) { + logger.debug("LEVEL: scheduling for removal: " + entry.getKey()); + delKeys.add(entry.getKey()); + } else if (mode == FLAGS_ALL) { + logger.debug("ALL: scheduling for removal: " + entry.getKey()); + delKeys.add(entry.getKey()); + } + } + + for (String str : delKeys) { + logger.trace("removing key " + str); + flags.remove(str); + } + } + + + /** + * Retrieves a level-wide flag by name. + * + * @param flag String Unique flag id + * @return the value associated with flag, or null if the flag does not exist. + */ + public static Object getGlobalFlag(String flag) { + return flags.get("/global/" + flag); + } + + /** checks for existence and if not creates the new global flag with the given initial value. Returns the value. + * afterwards it is guaranteed that no priorly existing value is overridden and that it definitely exists (created if not present before). + * + * @param flag String name for the global flag (created if not present) + * @param value Object value to be stored (used only if flag was not present) + * @return the current value of the flag (maybe the initial one in case flag was not there before) + */ + public static Object getOrCreateGlobalFlag(String flag, Object value) { + Object tmp = getGlobalFlag(flag); + if (tmp == null) { + setGlobalFlag(flag, value); + return value; + } else { + return tmp; + } + } + + + public Object getLevelFlag(String flag) { + return flags.get("/" + this.level + "/" + flag); + } + + public Object getOrCreateLevelFlag(String flag, Object createValue) { + Object tmp = getLevelFlag(flag); + if (tmp == null) { + return setLevelFlag(flag, createValue); + } else { + return tmp; + } + } + + + /** + * Reinitializes the level. + */ + public void reset() { + gameObjects.clear(); + } + + public boolean isPaused() { + return this.pausedFlag; + } + + public void setPaused(boolean p) { + this.pausedFlag = p; + } + + public void togglePause() { + pausedFlag = !pausedFlag; + + } + + + /** + * Method meant to be filled with own code, processes Keyboard inputs. + * + * @param keyEvents all collected {@link KeyEvent}s collected since last game loop. + */ + + public void processKeyEvents(Stack keyEvents) { + this.keyEvents = keyEvents; + Playground.setGlobalFlag("inputs", keyEvents); + } + + + public void processMouseEvents(Stack mouseEvents) { + this.mouseEvents = mouseEvents; + Playground.setGlobalFlag("inputs", mouseEvents); + } + + + public Stack getKeyEvents() { + return this.keyEvents; + } + + public Stack getMouseEvents() { + return this.mouseEvents; + } + + + /** + * Method meant to be filled with own code, handles the entore game logic (collision checks, timed + * events, ...). + * + */ + public abstract void applyGameLogic(); + + /** + * Sets up a single level. Prepares all objects etc. + * + * @param level String a string identifying the level number etc + */ + public abstract void prepareLevel(String level); + + public abstract boolean gameOver(); + + public abstract boolean levelFinished(); + + public int getSizeX() { + return canvasX; + } + + public int getSizeY() { + return canvasY; + } + + /** + * Calls all object update methods in level. Internal, never call directly. + * + */ + public void updateObjects() { + for (GameObject gameObject : gameObjects.values()) { // Iterator usage + if (gameObject.isActive() == true) { + gameObject.updateObject(); + logger.trace("updated object " + gameObject.scol); + } + } + + for (GameObject o : addables) { // Iterator usage + addObjectNow(o); + } + + for (String s : removables) { // Iterator usage + deleteObjectNow(s); + } + removables.clear(); + addables.clear(); + } + + public void setTimestep(double s) { + timeStep = s; + } + + public double getTimestep() { + return timeStep; + } + + /** set the game time value (in seconds) + * + * @param s seconds the game is running + */ + public void setGameTime(double s) { + this.gameTime = s; + } + + /** returns time in seconds since level start */ + public double getGameTime() { + return this.gameTime; + } + + + /** + * To be redefined!! Draws mainly h level background and global information like points etc. + * + * @param g2 Graphics2D abstract drawing object of java Swing, used to carry out all drawing + * operations. + */ + public abstract void redrawLevel(Graphics2D g2); + + /** + * Internal, do not call directly. + * + * @param g2 Graphics2D abstract drawing object of java Swing, used to carry out all drawing + * operations. + */ + public void redraw(Graphics2D g2) { + redrawLevel(g2); + for (GameObject gameObject : gameObjects.values()) { + if (gameObject.isActive()) { + gameObject.draw(g2); + } + } + } + + +} diff --git a/prog2-codebase/GameProject/src/playground/SaveGame.java b/prog2-codebase/GameProject/src/playground/SaveGame.java new file mode 100644 index 0000000..239a391 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/SaveGame.java @@ -0,0 +1,62 @@ +package playground; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.util.ArrayList; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class SaveGame { + + private static String datnam = "aktuellerSpielzustand.ser"; + private static Logger logger = LogManager.getLogger(SaveGame.class); + + + @SuppressWarnings("unchecked") + public static void save() { + + // gameobjects.AnimatedGameobject + ArrayList objArrList = null; + ObjectInputStream in = null; + try { + in = new ObjectInputStream(new FileInputStream(datnam)); + objArrList = (ArrayList) in.readObject(); + } catch (FileNotFoundException ex) { + logger.warn("Savegame file not (yet) existing!"); + } catch (Exception ex) { + logger.error(ex); + } finally { + try { + if (in != null) + in.close(); + } catch (IOException e) { + } + } + if (objArrList == null) + objArrList = new ArrayList(); + + objArrList.add(new String("ArrayListgroesse: " + objArrList.size())); + logger.debug(objArrList); + + ObjectOutputStream aus = null; + try { + aus = new ObjectOutputStream(new FileOutputStream(datnam)); + aus.writeObject(objArrList); + } catch (IOException ex) { + logger.error(ex); + } finally { + try { + if (aus != null) { + aus.flush(); + aus.close(); + } + } catch (IOException e) { + } + } + } + +} diff --git a/prog2-codebase/GameProject/src/playground/SpaceInvadersLevel.java b/prog2-codebase/GameProject/src/playground/SpaceInvadersLevel.java new file mode 100644 index 0000000..1231c06 --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/SpaceInvadersLevel.java @@ -0,0 +1,675 @@ +package playground; + +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.Polygon; +import java.awt.RenderingHints; +import java.awt.font.TextAttribute; +import java.awt.image.BufferedImage; +import java.io.*; +import java.text.AttributedString; +import java.util.LinkedList; +import controller.EnemyController; +import controller.FallingStarController; +import controller.LimitedTimeController; +import controller.ObjectController; +import controller.EgoController; +import controller.CollisionAwareEgoController; +import gameobjects.AnimatedGameobject; +import gameobjects.FallingStar; +import gameobjects.GameObject; +import gameobjects.EgoObject; +import gameobjects.TextObject; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * Class that realizes all the game logic of a very simple game level. The level contains for now + * only two objects that are {@link GameObject} subclasses: {@link FallingStar} and + * {@link EgoObject}. Functions performed by this class are: + *
        + *
      • initially set up the level, spawn all object etc., in method {@link #prepareLevel} + *
      • React to game events in {@link #actionIfEgoCollidesWithCollect(GameObject, GameObject)} , + * {@link #actionIfEgoCollidesWithEnemy(GameObject, GameObject)}, etc. + *
      • define basic object movement rules for all objects in the level in the various + * ObjectController subclasses: {@link EgoController} and {@link FallingStarController}. + *
      + */ +public class SpaceInvadersLevel extends Playground { + + public static final double SHOTSPEED = 175; + public static final double EGOSPEED = 220; + protected static final int LEVEL2STARS = 80; + protected static final double BONUS_DURATION = 1.; + protected static final double ENEMYSPEEDX = 60; + protected static final double ENEMYSPEEDY = 40; + protected static final double ENEMYSCALE = 1.0; + protected static final double ENEMYSHOTSPEED = 75; + protected static final int NRSHARDS = 50; + protected static final double EXPL_DURATION = 1.; + protected static final int NR_ENEMIES = 30; + protected static final int NR_COLLECT = 5; + protected static final Color EXPL_COLOR = Color.RED; + protected static final double SHARDSPEED = 200; + protected static final double STARSPEED = 100; + protected static final double STARTTEXTSPEED = 75; + protected static final double STARTPERIOD = 5.; + protected static final double DYING_INTERVAL = 2.0; + protected static final int CANVASX = 700; + protected static final int CANVASY = 700; + protected static final double EGORAD = 15; + protected static final double LEVEL_INIT_TIME = 1.0; + + protected int nextShot = 0; + + protected boolean lost = false; + protected boolean doneLevel = false; + protected double starttime = 0; + protected File smash = null; + protected File laser = null; + + protected BufferedImage[] alienImage = null; + protected double[] alienshowTime = null; + + protected BufferedImage[] heartImage = null; + protected double[] heartshowTime = null; + + protected Animation enemyAnim = null; + protected Animation heartAnim = null; + + protected static Logger logger = LogManager.getLogger(SpaceInvadersLevel.class); + + public SpaceInvadersLevel() { + super(); + this.canvasX = this.preferredSizeX(); + this.canvasY = this.preferredSizeY(); + } + + + /** + * initially sets up the level. Not called by user interaction, but called every time a layer is + * restarted from scratch. So make sure that this is possible. Here, resources are loaded only + * once even if method is called several times. + * + * @param id String identifies level. + */ + @Override + public void prepareLevel(String id) { + logger.info("PREPARE"); + reset(); + this.doneLevel = false; + this.lost = false; + resetFlags(FLAGS_LEVEL); + + // set up flags that some objects rely on + setLevelFlag("delete", new LinkedList()); + setLevelFlag("replace", new LinkedList()); + getOrCreateGlobalFlag("points", Integer.valueOf(0)); + setLevelFlag("enemyShotCounter", Integer.valueOf(0)); + setLevelFlag("gameStatus", "start"); + setLevelFlag("detailedStatus", "std"); + getOrCreateGlobalFlag("egoLives", Integer.valueOf(5)); + setLevelFlag("dying", Double.valueOf(-1)); + + // start time measure + this.starttime = this.getGameTime(); + + // music load + if (this.smash == null) { + this.smash = new File("./audio/smash.wav"); + } + if (this.laser == null) { + this.laser = new File("./audio/laser.wav"); + } + + // ----- Alien + if (this.enemyAnim == null) { + String dateiName = "./video/sweetAlien.txt"; + this.enemyAnim = new Animation(dateiName); + } + + // -----Heart + if (this.heartAnim == null) { + String heartName = "./video/heart.txt"; + this.heartAnim = new Animation(heartName); + } + + // load highscore and update + HighscoreManager dh = new HighscoreManager(); + int alltimeHighscore = dh.readHSFromFile(); + setGlobalFlag("highscore", alltimeHighscore); + logger.info("HIGHSCORE" + alltimeHighscore); + } + + + /** + * (re)draws the level but NOT the objects, they draw themselves. Called by the main game loop. + * This method mainly draws the background and the scoreboard. + * + * @param g2 Graphics2D object that can, and should be, draw on. + */ + @Override + public void redrawLevel(Graphics2D g2) { + // Set anti-alias! + g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF); + // Set anti-alias for text + g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, + RenderingHints.VALUE_TEXT_ANTIALIAS_OFF); + + // fill background with black + int[] x = {0, canvasX, canvasX, 0}; + int[] y = {0, 0, canvasY, canvasY}; + Polygon bg = new Polygon(x, y, 4); + g2.setColor(Color.BLACK); + g2.fill(bg); + + // draw score in upper left part of playground + Integer pts = (Integer) getGlobalFlag("points"); + Font drawFont = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as = new AttributedString("Points: " + pts); + as.addAttribute(TextAttribute.FONT, drawFont); + as.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as.getIterator(), 10, 20); + + // draw lives counter in upper left part of playground + Integer lives = (Integer) getGlobalFlag("egoLives"); + Font drawFont2 = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as2 = new AttributedString("Lives: " + lives); + as2.addAttribute(TextAttribute.FONT, drawFont2); + as2.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as2.getIterator(), canvasX - 100, 20); + + // draw highscore in left part of playground under score + Integer highscore = (Integer) getGlobalFlag("highscore"); + Font drawFont3 = new Font("SansSerif", Font.PLAIN, 20); + AttributedString as3 = new AttributedString("Highscore: " + highscore); + as3.addAttribute(TextAttribute.FONT, drawFont3); + as3.addAttribute(TextAttribute.FOREGROUND, Color.yellow); + g2.drawString(as3.getIterator(), 10, 40); + + if (isPaused()) { + Font drawFont4 = new Font("SansSerif", Font.PLAIN, 50); + AttributedString as4 = new AttributedString("Das Spiel wurde pausiert."); + as4.addAttribute(TextAttribute.FONT, drawFont4); + as4.addAttribute(TextAttribute.FOREGROUND, Color.red); + g2.drawString(as4.getIterator(), 30, 400); + } + + } + + + /** + * applies the logic of the level: For now, this is just about deleting shots that are leaving the + * screen and calling methods 'actionIf..' in case objects collide. + * + */ + @Override + public void applyGameLogic() { + double gameTime = this.getGameTime(); + String gameStatus = (String) getLevelFlag("gameStatus"); + String subStatus = (String) getLevelFlag("detailedStatus"); + + if (gameStatus.equals("start") == true) { + setupInitialState(); + + } else if (gameStatus.equals("starting") == true) { + + if ((gameTime - starttime) > LEVEL_INIT_TIME) { + setLevelFlag("gameStatus", "init"); + } + + } else if (gameStatus.equals("init") == true) { + + this.createEnemies(); + this.createCollectables(); + + setLevelFlag("gameStatus", "playing"); + + } else if (gameStatus.equals("playing") == true) { + GameObject s = this.getObject("ego"); + + if (subStatus.equals("std")) { + + // check for collisions of enemy and shots, reuse shots list from before.. + LinkedList enemies = collectObjects("enemy", false); + + // check whether all enemies have been destroyed or escaped + if (enemies.size() == 0) { + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + this.doneLevel = true; + logger.info("no enemies left, level done."); + } + + // loop over enemies to check for collisions or suchlike ... + LinkedList shots = collectObjects("simpleShot", true); + for (GameObject e : enemies) { + // if ego collides with enemy.. + if (s.collisionDetection(e)) { + actionIfEgoCollidesWithEnemy(e, s); + } + + // if shot collides with enemy + for (GameObject shot : shots) { + if (e.collisionDetection(shot)) { + actionIfEnemyIsHit(e, shot); + } + } + } + + // collecting hearts + LinkedList collects = collectObjects("collect", false); + for (GameObject c : collects) { + if (s.collisionDetection(c)) { + actionIfEgoCollidesWithCollect(c, s); + } + } + + // loop over enemies and, with a certain probability, launch an enemy shot for each one + for (GameObject e : enemies) { + createEnemyShot(e); + } + + // check for collisions between ego object and enemy shots + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject eshot : eshots) { + + if (s.collisionDetection(eshot)) { + logger.trace("COLLISION" + eshot.scol.get(0) + "/" + s.scol.get(0)); + actionIfEgoObjectIsHit(eshot, s); + } + } + } // if substatus.. + else if (subStatus.equals("dying")) { + Double t0 = (Double) getLevelFlag("t0"); + if (gameTime - t0 > DYING_INTERVAL) { + LinkedList enemies = collectObjects("enemy", false); + setLevelFlag("detailedStatus", "std"); + s.setActive(true); + + for (GameObject e : enemies) { + logger.trace("activating" + e.getId()); + e.setActive(true); + } + } + } + + } // if (gameStatus == "playing") + + + } + + + public boolean gameOver() { + return lost; + } + + + public boolean levelFinished() { + return doneLevel; + } + + + /** + * calculates and returns the preferred size of the level (in pixel) for X-direction + */ + public int preferredSizeX() { + return CANVASX; + } + + /** + * calculates and returns the preferred size of the level (in pixel) for Y-direction + */ + public int preferredSizeY() { + return CANVASY; + } + + + /** Adds ego object and stars and displays startup message. Is called from applyGameLogic */ + protected void setupInitialState() { + double gameTime = this.getGameTime(); + setLevelFlag("gameStatus", "starting"); + + this.createStars(); + + // set up ego object + this.createEgoObject(); + + // add text object to playground + ObjectController ctrl = new LimitedTimeController(gameTime, 3.); + GameObject readyText = new TextObject("ready?", this, getSizeX() / 2, 0, 0, 100, + this.getStartupMessage(), 50, Color.RED).addController(ctrl); + addObject(readyText); + + } + + + /** + * simply returns the text that should be displayed at level start + * + * @return a string that is displayed at start. Should be not longer than 30 characters. + */ + protected String getStartupMessage() { + return "Get ready for level X!"; + } + + + /** + * returns a number representing the speed of an enemy object in X direction (pixels/second) + * + * @return a positive value + */ + protected double calcEnemySpeedX() { + return SpaceInvadersLevel.ENEMYSPEEDX; + } + + + /** + * returns a number representing the speed of an enemy object in Y direction (pixels/second) + * + * @return a positive value + */ + protected double calcEnemySpeedY() { + return SpaceInvadersLevel.ENEMYSPEEDY; + } + + /** + * returns the maximum number of enemy instances (which are created at level start) + * + * @return a positive value + */ + protected int calcNrEnemies() { + return SpaceInvadersLevel.NR_ENEMIES; + } + + /** + * returns the maximum number of collectables' instances (which are created at level start) + * + * @return a positive value + */ + protected int calcNrCollect() { + return SpaceInvadersLevel.NR_COLLECT; + } + + + protected GameObject createEnemyShotObject(GameObject parentObject, String name, + ObjectController limitedTimeController) { + GameObject to = + new TextObject(name, this, parentObject.getX(), parentObject.getY(), 0, ENEMYSHOTSPEED, "I", + 20, Color.YELLOW).generateColliders().addController(limitedTimeController); + /* + * // also possible: GameObject to = new RectObject(name, this, parentObject.getX(), + * parentObject.getY(), 0, ENEMYSHOTSPEED, 4, 20, + * Color.YELLOW).addController(limitedTimeController) ; to.generateColliders(); + */ + return to; + } + + + protected void createEnemyShot(GameObject e) { + double gameTime = this.getGameTime(); + + double PROB = calcEnemyShotProb(); + double diceThrow = Math.random(); + Integer nrEnemyShots = (Integer) (getLevelFlag("enemyShotCounter")); + if (diceThrow < PROB) { + setLevelFlag("enemyShotCounter", Integer.valueOf(++nrEnemyShots)); + + LimitedTimeController limitedTimeController = new LimitedTimeController(gameTime, 10.); + + GameObject textObject = + createEnemyShotObject(e, "enmyShot" + nrEnemyShots, limitedTimeController); + + addObject(textObject); + } + } + + + /** + * calculates and returns the probability that an enemy shots. Used by + * {@link SpaceInvadersLevel#createEnemyShot(GameObject)}. + * + * @return a positive value between 0 (no chance) to 1 (for sure). + */ + double calcEnemyShotProb() { + return 0.1 * this.getTimestep(); + } + + + ObjectController createEnemyController() { + return new EnemyController(); + } + + + GameObject createSingleEnemy(String name, double x_enemy, double y_enemy, double vx_enemy, + double vy_enemy, ObjectController enemyController, double gameTime) { + + GameObject tmp = + new AnimatedGameobject(name, this, x_enemy, y_enemy, vx_enemy, vy_enemy, ENEMYSCALE, + this.enemyAnim, gameTime, "loop").addController(enemyController).generateColliders(); + return tmp; + } + + GameObject createSingleCollect(String name) { + double gameTime = this.getGameTime(); + double cspeedy = 20.; + double x_collect = Math.random() * this.canvasX; + double y_collect = Math.random() * this.canvasY / 3; + double vx_collect = 2 * (Math.random() - 0.5) * 0; + double vy_collect = Math.random() * cspeedy; + + GameObject tmp = new AnimatedGameobject(name, this, x_collect, y_collect, vx_collect, + vy_collect, 0.3, this.heartAnim, gameTime, "loop").generateColliders() + .addController(new EnemyController()); + return tmp; + } + + + void createEnemies() { + // create enemies + double gameTime = this.getGameTime(); + double speedx = this.calcEnemySpeedX(); + double speedy = this.calcEnemySpeedY(); + for (int i = 0; i < this.calcNrEnemies(); i++) { + double x_enemy = Math.random() * this.canvasX; + double y_enemy = Math.random() * this.canvasY / 3; + double vx_enemy = 2 * (Math.random() - 0.5) * speedx; + double vy_enemy = Math.random() * speedy; + + ObjectController enemyController = createEnemyController(); + GameObject enemy = createSingleEnemy("enemy" + i, x_enemy, y_enemy, vx_enemy, vy_enemy, + enemyController, gameTime); + addObject(enemy); + } + } + + void createCollectables() { + // create collectables + for (int i = 0; i < this.calcNrCollect(); i++) { + + + GameObject collect = createSingleCollect("collect" + i); + + addObject(collect); + } + } + + + void createEgoObject() { + // add ego to playground at lower bottom + EgoController egoController = + new CollisionAwareEgoController(SpaceInvadersLevel.EGORAD, this.laser); + + GameObject ego = new EgoObject("ego", this, canvasX / 2, canvasY - (EGORAD * 2), 0, 0, EGORAD) + .addController(egoController).generateColliders(); + + addObject(ego); + } + + + void createStars() { + // add stars to playground + for (int i = 1; i <= LEVEL2STARS; i++) { + FallingStarController fsc = new FallingStarController(); + + GameObject star = new FallingStar("star" + i, this, Math.random() * canvasX, + Math.random() * 15, 0.0, Math.random() * STARSPEED, Color.WHITE, 1.).addController(fsc); + + addObject(star); + } + } + + + void createExplosion(double gameTime, GameObject e, String basename, double interval, + Color color) { + // spawn a cloud of exploded shards + for (int i = 0; i < NRSHARDS; i++) { + double vx = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVX(); + double vy = 2 * (Math.random() - 0.5) * SHARDSPEED + e.getVY(); + addObject( + new FallingStar("shard" + gameTime + "/" + i, this, e.getX(), e.getY(), vx, vy, color, 2) + .addController(new LimitedTimeController(gameTime, interval))); + } + } + + + /** + * implements game behavior if an enemy object is hit by a players' shot. It creates an explosion + * effect, plays a sound and adds 200 points to the current score (and it removes the enemy object + * and the shot object). + * + * @param e enemy which was hit + * @param shot the shot object that hit the enemy + */ + void actionIfEnemyIsHit(GameObject e, GameObject shot) { + + double gameTime = this.getGameTime(); + createExplosion(gameTime, e, "shard", DYING_INTERVAL, Color.RED); + + Music.music(smash); + + // delete enemy + deleteObject(e.getId()); + + // delete shot + deleteObject(shot.getId()); + + // add to points counter + Integer pts = (Integer) getGlobalFlag("points"); + setGlobalFlag("points", pts + 200); + + } + + /** + * implements game behavior if ego object of player touches a collectable + * {@link gameobjects.GameObject }. Here it adds one extra life and displays a text for a limited + * time on screen "Extra life!!". The duration is set in constant + * {@link SpaceInvadersLevel#EXPL_DURATION}. + * + * + * @param collect item touched by ego + * @param ego the players ego object + */ + void actionIfEgoCollidesWithCollect(GameObject collect, GameObject ego) { + double gameTime = this.getGameTime(); + + if (this.getObject("bonustext") == null) { + + // spawn a bonus points object + double vx = 2 * (Math.random() - 0.5) * SHARDSPEED + collect.getVX(); + double vy = 2 * (Math.random() - 0.5) * SHARDSPEED + collect.getVY(); + + + LimitedTimeController bonusTextController = + new LimitedTimeController(gameTime, SpaceInvadersLevel.EXPL_DURATION); + GameObject bonusText = new TextObject("bonustext", this, collect.getX(), collect.getY(), vx, + vy, "Extra life!!", 20, Color.YELLOW).addController(bonusTextController); + + addObject(bonusText); + + // delete collect + deleteObject(collect.getId()); + + // add to points counter + Integer lives = (Integer) getGlobalFlag("egoLives"); + lives++; + setGlobalFlag("egoLives", lives); + } + + } + + /** + * implements behaviour of game when ego object is touching an enemy. It displays a text "AUAA!!" + * for a certain time on the game screen. Time span is defined as constant in + * {@link SpaceInvadersLevel#BONUS_DURATION } . + * + * @param enemy the enemy that was hit + * @param ego the ego object of the player + */ + void actionIfEgoCollidesWithEnemy(GameObject enemy, GameObject ego) { + + /** + * set temporary text over ego. This object lives only for a short time. While it lives, further + * collisions are ignored. Otherwise a single collision would result in a lot of deducted + * points... + */ + + double gameTime = this.getGameTime(); + GameObject auaObj = this.getObject("AUA-EGO"); + + if (auaObj == null) { + addObject(new TextObject("AUA-EGO", this, ego.getX(), ego.getY() - 20, ego.getVX(), + ego.getVY(), "AUAA!!", 10, Color.RED) + .addController(new LimitedTimeController(gameTime, BONUS_DURATION))); + // deduct points + Integer pts = (Integer) getGlobalFlag("points"); + setGlobalFlag("points", pts - 500); + } + + } + + /** + * implements what happens if the eog object of player is hit by a shot. It removes the shot from + * screen, reduces lives by 1, removes the ego and end current playing. + * + * @param eshot the shot object that hits the ego + * @param ego the ego object of the player + */ + void actionIfEgoObjectIsHit(GameObject eshot, GameObject ego) { + logger.debug("collision of " + eshot.getId() + " and " + ego.getId()); + + double gameTime = this.getGameTime(); + this.deleteObject(eshot.getId()); + + Integer oldLives = (Integer) getGlobalFlag("egoLives"); + int newLives = oldLives - 1; + setGlobalFlag("egoLives", newLives); + logger.debug("set egoLives to " + newLives + " (was " + oldLives + ")"); + + if (newLives <= 0) { + lost = true; + HighscoreManager.writeHSToFile((Integer) Playground.getGlobalFlag("points"), + (Integer) Playground.getGlobalFlag("highscore")); + + } + + LinkedList eshots = collectObjects("enmyShot", true); + for (GameObject _eshot : eshots) { + deleteObject(_eshot.getId()); + } + setLevelFlag("detailedStatus", "dying"); + setLevelFlag("t0", gameTime); + ego.setActive(false); + createExplosion(gameTime, ego, "egoexp", DYING_INTERVAL, Color.WHITE); + LinkedList enemies = collectObjects("enemy", false); + for (GameObject enemy : enemies) { + enemy.setY(0); + enemy.setActive(false); + } + + } + + + +} diff --git a/prog2-codebase/GameProject/src/playground/SpaceInvadersLevelTest.java b/prog2-codebase/GameProject/src/playground/SpaceInvadersLevelTest.java new file mode 100644 index 0000000..145028e --- /dev/null +++ b/prog2-codebase/GameProject/src/playground/SpaceInvadersLevelTest.java @@ -0,0 +1,81 @@ +package playground; + +import static org.junit.Assert.assertTrue; +import java.awt.Color; +import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import gameobjects.EgoObject; +import gameobjects.GameObject; +import gameobjects.RectObject; + +/** + * Tests {@link SpaceInvadersLevel} for + *
        + *
      1. calcEnemySpeedX() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDX + *
      2. calcEnemySpeedY() returns the same value as constant SpaceInvadersLevel.ENEMYSPEEDY + *
      3. calcNrEnemies() returns the same value as constant SpaceInvadersLevel.NR_ENEMIES + *
      4. actionIfEnemyIsHit() adds 200 points to score + *
      5. actionIfEgoObjectIsHit() reduces number of lives (egoLives) + *
      + * @author jkonert + * + */ +class SpaceInvadersLevelTest { + + private static SpaceInvadersLevel myLevel; + + @BeforeAll + static void setUpBeforeClass() throws Exception { + myLevel = new SpaceInvadersLevel(); + SpaceInvadersLevel.setGlobalFlag("egoLives", 5); + SpaceInvadersLevel.setGlobalFlag("points", 500); + SpaceInvadersLevel.setGlobalFlag("highscore", 5000); + } + + @AfterAll + static void tearDownAfterClass() throws Exception { + // nothing + } + + @Test + void testCalcEnemySpeedX() { + assertTrue("EnemySpeedX is as in SpaceInvadersLevel defined", myLevel.calcEnemySpeedX() == SpaceInvadersLevel.ENEMYSPEEDX); + } + + @Test + void testCalcEnemySpeedY() { + assertTrue("EnemySpeedY is as in SpaceInvadersLevel defined", myLevel.calcEnemySpeedY() == SpaceInvadersLevel.ENEMYSPEEDY); + } + + @Test + void testCalcNrEnemies() { + assertTrue("NrOfEnemies is as in SpaceInvadersLevel defined", myLevel.calcNrEnemies() == SpaceInvadersLevel.NR_ENEMIES); + } + + + @Test + void testActionIfEnemyIsHitPointsUp() { + Integer numPointsBefore = (Integer)Playground.getGlobalFlag("points"); + GameObject dummyShot = new RectObject("shot1", myLevel, 0,0,0,0, 12, 12, Color.WHITE); + GameObject dummyEnemy = new RectObject("ego1", myLevel, 0,0,0,0, 12, 12, Color.BLACK); + myLevel.addObject(dummyShot); + myLevel.addObject(dummyEnemy); + myLevel.actionIfEnemyIsHit(dummyEnemy, dummyShot);; // this is the call under test + Integer numPointsAfter = (Integer)Playground.getGlobalFlag("points"); // changed? + assertTrue("numPoints is up +200 after EnemyIsHit", numPointsAfter == numPointsBefore + 200); // points are set +200 , check. + } + + @Test + void testActionIfEgoObjectIsHitLivesDown() { + Integer numLivesBefore = (Integer)Playground.getGlobalFlag("egoLives"); + GameObject dummyShot = new RectObject("shot1", myLevel, 0,0,0,0, 12, 12, Color.RED); + GameObject dummyEgo = new EgoObject("ego1", myLevel, 0,0,0,0, 5); + myLevel.addObject(dummyShot); + myLevel.actionIfEgoObjectIsHit(dummyShot, dummyEgo); // this is the call under test + Integer numLivesAfter = (Integer)Playground.getGlobalFlag("egoLives"); // changed? + assertTrue("numLives is reduced by one ifEgoIsHit", numLivesAfter == numLivesBefore - 1); // lives is reduced by one + + } + +} diff --git a/prog2-codebase/GameProject/src/rendering/AnimationArtist.java b/prog2-codebase/GameProject/src/rendering/AnimationArtist.java new file mode 100644 index 0000000..2719869 --- /dev/null +++ b/prog2-codebase/GameProject/src/rendering/AnimationArtist.java @@ -0,0 +1,93 @@ +package rendering; + +import gameobjects.GameObject; +import playground.Animation; +import java.awt.Graphics2D; +import java.awt.image.BufferedImage; +import java.util.LinkedList; +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +public class AnimationArtist extends Artist { + + protected LinkedList imageArray; + protected LinkedList showtime; + protected double t0; + + protected int loopFrame = 0; + + protected double w = 0, h = 0, scale = 0; + protected String playmode = ""; // can be loop, forward, backward + private static Logger logger = LogManager.getLogger(AnimationArtist.class); + + + public AnimationArtist(GameObject go, Animation anim, double t0, String playmode, double scale) { + super(go); + + this.imageArray = anim.getImageList(); + this.showtime = anim.getShowtimeList(); + this.t0 = t0; + logger.debug("AnimationArtist start = ") ; + this.loopFrame = 0; + + for (int i = 0; i < imageArray.size(); i++) { + logger.trace("ANIMRAWWH="+imageArray.get(i).getWidth()) ; + this.w = Math.max(this.w, imageArray.get(i).getWidth()); + this.h = Math.max(imageArray.get(i).getHeight(), this.h); + } + + logger.debug("AnimationArtist RAW WH = "+this.w+"/"+this.h) ; + + this.playmode = playmode; + this.w *= scale; + this.h *= scale; + } + + public double getW() { + return w; + } + + public double getH() { + return h; + } + + + @Override + public void draw(Graphics2D g) { + double i2 = this.getGameTime(); + + double elapsedTime = i2 - t0; + + // Diff chance from sec to millis + double mseconds = (double) elapsedTime; + logger.debug("showtime= "+showtime.get(loopFrame)+" elapsed= "+elapsedTime+" i2= "+i2); + + if (playmode.equals("loop")) { + if (mseconds >= showtime.get(loopFrame)) { + loopFrame++; + if (loopFrame >= imageArray.size()) + loopFrame = 0; + t0 = i2; + } + } + + if (playmode.equals("forward")) { + if (mseconds >= showtime.get(loopFrame) && loopFrame < imageArray.size() - 1) { + loopFrame++; + t0 = i2; + } + } + + if (playmode.equals("backward")) { + if (mseconds >= showtime.get(loopFrame) && loopFrame > 1) { + loopFrame--; + t0 = i2; + } + } + + g.drawImage(imageArray.get(loopFrame), (int) Math.round(this.getX() - w / 2.), + (int) Math.round(this.getY() - h / 2.), (int) w, (int) h, null); + + } + +} diff --git a/prog2-codebase/GameProject/src/rendering/Artist.java b/prog2-codebase/GameProject/src/rendering/Artist.java new file mode 100644 index 0000000..0b33304 --- /dev/null +++ b/prog2-codebase/GameProject/src/rendering/Artist.java @@ -0,0 +1,40 @@ +package rendering; + +import gameobjects.GameObject; +import java.awt.Graphics2D; + +public abstract class Artist { + protected GameObject gameObject; + + Artist(GameObject go) { + this.gameObject = go; + } + + public double getX() { + return this.gameObject.getX(); + } + + + public double getY() { + return this.gameObject.getY(); + } + + + public double getVX() { + return this.gameObject.getX(); + } + + public double getVY() { + return this.gameObject.getX(); + } + + + public double getGameTime() { + return this.gameObject.getGameTime(); + } + + + + public abstract void draw(Graphics2D g); + +} diff --git a/prog2-codebase/GameProject/src/rendering/CircleArtist.java b/prog2-codebase/GameProject/src/rendering/CircleArtist.java new file mode 100644 index 0000000..fd16602 --- /dev/null +++ b/prog2-codebase/GameProject/src/rendering/CircleArtist.java @@ -0,0 +1,34 @@ +package rendering; + +import gameobjects.GameObject; +import java.awt.Color; +import java.awt.Graphics2D; + +public class CircleArtist extends Artist { + + protected double egoRad; + protected Color color; + + public CircleArtist(GameObject go) { + super(go); + this.egoRad = 15.0; + } + + public CircleArtist(GameObject go, double egoRad, Color color) { + super(go); + this.egoRad = egoRad; + this.color = color; + } + + @Override + public void draw(Graphics2D g) { + g.setColor(this.color); + double x = this.getX(); + double y = this.getY(); + int posX = (int) (x - egoRad); + int posY = (int) (y - egoRad); + int rad = (int) (2 * egoRad); + g.fillOval(posX, posY, rad, rad); + } + +} diff --git a/prog2-codebase/GameProject/src/rendering/RectArtist.java b/prog2-codebase/GameProject/src/rendering/RectArtist.java new file mode 100644 index 0000000..e6de3b6 --- /dev/null +++ b/prog2-codebase/GameProject/src/rendering/RectArtist.java @@ -0,0 +1,31 @@ +package rendering; + +import gameobjects.GameObject; +import java.awt.Color; +import java.awt.Graphics2D; + +public class RectArtist extends Artist { + + protected Color color; + protected double width, height; + + public RectArtist(GameObject go, double width, double height, Color color) { + super(go); + this.color = color; + this.width = width; + this.height = height; + } + + @Override + public void draw(Graphics2D g) { + g.setColor(this.color); + + // g.drawLine((int) (Math.round(this.getX())), (int) (Math.round(this.getY()-this.height/2.)), + // (int) Math.round(this.getX()), + // (int) Math.round(this.getY() + this.height/2.)); + g.fillRect((int) (this.getX() - this.width / 2.), (int) (this.getY() - this.height / 2.), + (int) this.width, (int) this.height); + + } + +} diff --git a/prog2-codebase/GameProject/src/rendering/TextArtist.java b/prog2-codebase/GameProject/src/rendering/TextArtist.java new file mode 100644 index 0000000..4d33b45 --- /dev/null +++ b/prog2-codebase/GameProject/src/rendering/TextArtist.java @@ -0,0 +1,86 @@ +package rendering; + +import gameobjects.GameObject; +import java.awt.Color; +import java.awt.Font; +import java.awt.Graphics2D; +import java.awt.font.FontRenderContext; +import java.awt.font.TextAttribute; +import java.text.AttributedString; + +/** + * Rendering an object as a text of a specified color, size and font. + */ +public class TextArtist extends Artist { + + private String text = null; + private Color textColor = null; + protected double textWidth, textHeight; + Font serifFont = null; + + /** Constructor to intitialize the TextArtist attributes + * + * @param go GameObject to be used for xy coordinate reference + * @param text the text to draw + * @param size point size to be used for font "Serif" + * @param textColor color to draw the text with (foreground) + */ + public TextArtist(GameObject go, String text, int size, Color textColor) { + super(go); + this.text = text; + + this.serifFont = new Font("Serif", Font.PLAIN, size); + FontRenderContext frc = new FontRenderContext(null, false, false); + this.textWidth = (int) (serifFont.getStringBounds(text, frc).getWidth()); + this.textHeight = (int) (serifFont.getStringBounds(text, frc).getHeight()); + + this.textColor = textColor; + } + + + public String getText() { + return this.text; + } + + public void setText(String s) { + this.text = s; + } + + + + public double getTextWidth() { + return textWidth; + } + + + public void setTextWidth(double textWidth) { + this.textWidth = textWidth; + } + + + + public double getTextHeight() { + return textHeight; + } + + + public void setTextHeight(double textHeight) { + this.textHeight = textHeight; + } + + /** + * Draw the text. + * + * @param g The Swing graphics context. + */ + @Override + public void draw(Graphics2D g) { + AttributedString as = new AttributedString(this.text); + as.addAttribute(TextAttribute.FONT, this.serifFont); + as.addAttribute(TextAttribute.FOREGROUND, this.textColor); + + g.drawString(as.getIterator(), (int) Math.round(this.getX() - this.textWidth / 2.), + (int) Math.round(this.getY() + this.textHeight / 2.)); + } + +} diff --git a/prog2-codebase/GameProject/src/ui/AboutFrame.java b/prog2-codebase/GameProject/src/ui/AboutFrame.java new file mode 100644 index 0000000..ad5671d --- /dev/null +++ b/prog2-codebase/GameProject/src/ui/AboutFrame.java @@ -0,0 +1,54 @@ +package ui; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextArea; + +/** + * + * Creates a JFrame with a short text about the creators of the game code. + * + */ +class AboutFrame extends Object { + private JFrame frame = new JFrame(); + + AboutFrame() { + + JPanel aboutPanel = new JPanel(); + + JLabel text = new JLabel("About", JLabel.CENTER); + JTextArea field = new JTextArea( + "This game was developed by Prof. Gepperth and Prof. Konert and the students of module Programming 2. It contains several levels of SpaceInvadersLevel style and BreakoutLevel style. The framework below allows quick creation of different 2d game types."); + field.setBounds(25, 25, 80, 80); + field.setLineWrap(true); + field.setWrapStyleWord(true); + field.setBackground(aboutPanel.getBackground()); + field.setEditable(false); + + JButton ok = new JButton("OK"); + ok.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent ae) { + frame.setVisible(false); + } + }); + + aboutPanel.setLayout(new BoxLayout(aboutPanel, BoxLayout.Y_AXIS)); + aboutPanel.add(text); + aboutPanel.add(field); + aboutPanel.add(ok); + + frame.add(aboutPanel); + frame.setSize(400, 400); + } + + protected void show() { + frame.setVisible(true); + } + +} diff --git a/prog2-codebase/GameProject/src/ui/GamePanel.java b/prog2-codebase/GameProject/src/ui/GamePanel.java new file mode 100644 index 0000000..3f8ec8f --- /dev/null +++ b/prog2-codebase/GameProject/src/ui/GamePanel.java @@ -0,0 +1,145 @@ +package ui; + +import java.awt.Dimension; +import java.awt.Graphics; +import java.awt.Graphics2D; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; +import java.util.HashMap; +import java.util.Stack; +import javax.swing.JPanel; +import playground.Playground; +import java.awt.event.*; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * UI element that holds the graphic visualization of current {@link Playground}. Registers key and + * mouse events. + * + */ +class GamePanel extends JPanel implements KeyListener, MouseListener { + private static final long serialVersionUID = 1L; + protected volatile boolean painting = false; + private Playground playground = null; + private HashMap keys = new HashMap(); + Stack keyEvents = new Stack(); + Stack mouseEvents = new Stack(); + + private static Logger logger = LogManager.getLogger(GamePanel.class); + + GamePanel() { + super(); + setPreferredSize(new Dimension(100, 100)); + addKeyListener(this); + } + + public void setSize(int sizeX, int sizeY) { + setPreferredSize(new Dimension(sizeX, sizeY)); + } + + @Override + public void repaint() { + super.repaint(); + } + + public void setPainting() { + painting = true; + } + + + public void waitWhilePainting() { + while (painting) { + } + } + + + Stack getKeyEvents() { + return keyEvents; + } + + + Stack getMouseEvents() { + return mouseEvents; + } + + + public void setPlayground(Playground pg) { + this.playground = pg; + if (this.playground != null) { + setPreferredSize(new Dimension(this.playground.getSizeX(), this.playground.getSizeX())); + setSize(getPreferredSize()); + this.invalidate(); + } + } + + public boolean stillPainting() { + return painting; + } + + @Override + public void paintComponent(Graphics g) { + super.paintComponent(g); + logger.trace("my Playground: " + playground); + if (playground != null) { + playground.redraw((Graphics2D) g); + } + painting = false; + + } + + + public HashMap getCurrentKey() { + return keys; + } + + + @Override + public void keyTyped(KeyEvent e) { + + } + + @Override + public void keyPressed(KeyEvent e) { + logger.debug("pressed keyCode " + e.getKeyCode()); + logger.trace(e.paramString()); + this.keyEvents.push(e); + } + + @Override + public void keyReleased(KeyEvent e) { + + logger.debug("released keyCode " + e.getKeyCode()); + this.keyEvents.push(e); + logger.trace(e.paramString()); + } + + @Override + public void mouseClicked(MouseEvent e) { + this.mouseEvents.push(e); + } + + @Override + public void mouseReleased(MouseEvent e) { + // this.mouseEvents.push(e) ; + } + + + @Override + public void mousePressed(MouseEvent e) { + // this.mouseEvents.push(e) ; + } + + + + @Override + public void mouseEntered(MouseEvent e) { + // this.mouseEvents.push(e) ; + } + + @Override + public void mouseExited(MouseEvent e) { + // this.mouseEvents.push(e) ; + } +} diff --git a/prog2-codebase/GameProject/src/ui/GameUI.java b/prog2-codebase/GameProject/src/ui/GameUI.java new file mode 100644 index 0000000..ff19226 --- /dev/null +++ b/prog2-codebase/GameProject/src/ui/GameUI.java @@ -0,0 +1,242 @@ +package ui; + +import java.util.*; +import javax.swing.JFrame; +import javax.swing.JMenu; +import javax.swing.JMenuBar; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.BoxLayout; +import javax.swing.JButton; +import javax.swing.WindowConstants; +import playground.Playground; + +import java.awt.event.*; + +import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.LogManager; + +/** + * creates the game UI JFrame containing a canvas (see class {@link GamePanel})) for the levels to + * paint the games. Has a menu for loading, saving games and an about menu item. two buttons allow + * restarting the game or exit. + * + * + */ +public class GameUI implements ActionListener { + + private static volatile int newAction = -1; + + /** the JFrame instance used in this window */ + protected JFrame frame = null; + /** the panel holding all components, uses {@link BoxLayout} Y-Direction */ + protected JPanel panel = null; + /** + * the instance of {@link GamePanel} for Playgrounds to paint and refresh their level elements. It + * is added as first component of {@link #panel} + */ + private GamePanel canvas = null; + /** + * the button panel holding buttons, set on {@link #panel} at last, uses {@link BoxLayout} + * X-Direction + */ + protected JPanel buttonPanel = null; + + protected JMenuItem playItem; + protected JMenuItem loadItem; + protected JMenuItem saveItem; + protected JMenuItem quitItem; + protected JMenuItem aboutItem; + protected JMenu gameMenu; + protected JMenu helpMenu; + protected JButton button; + protected JButton button2; + + public static final int ACTION_NEW = 1; + public static final int ACTION_LOAD = 2; + public static final int ACTION_SAVE = 3; + public static final int ACTION_RESET = 4; + public static final int ACTION_QUIT = 5; + public static final int ACTION_BUTTON = 6; + public static final int ACTION_PAUSE = 6; + public static final int ACTION_ABOUT = 7; + + + private static Logger logger = LogManager.getLogger(GameUI.class); + + /** + * as typical for GUI classes this constructor creates all the components and adds them to the + * frame. It adds this instance as ActionListener for all components. See + * {@link #actionPerformed(ActionEvent)} for details. It directly sets the frame visible as a + * final step. + * + *

      + * If you want to extend this GUI, create a subclass and add new elements in constructor. It is + * necessary to call {@link JFrame#revalidate()} on {@link #frame} attribute after changing/adding + * components to {@link #panel} or {@link #canvas}, because the constructor here already sets + * visibility to true and renders the IFrame. + *

      + * + * @param sizeX pixel dimension wanted in x direction + * @param sizeY pixel dimension wanted in y direction + */ + public GameUI(int sizeX, int sizeY) { + + // create a canvas on which the levels (Playgrounds) will be painted later when loaded and + // started. + this.canvas = new GamePanel(); + + + // create contentPane + this.panel = new JPanel(); + this.panel.setLayout(new BoxLayout(this.panel, BoxLayout.Y_AXIS)); + + + // panel.setLayout(new FlowLayout()); + // panel.setLayout(new GridBagLayout()); + // panel.setLayout(new SpringLayout()); + this.panel.add(canvas); + + // create main window + this.frame = new JFrame("Prog2 GameProject!"); + this.frame.setContentPane(panel); + + // Menu + this.playItem = new JMenuItem("New Game"); + this.loadItem = new JMenuItem("Restore game"); + this.saveItem = new JMenuItem("Save game"); + this.quitItem = new JMenuItem("Exit game"); + + this.playItem.addActionListener(this); + this.loadItem.addActionListener(this); + this.saveItem.addActionListener(this); + this.quitItem.addActionListener(this); + + this.gameMenu = new JMenu("Game"); + this.gameMenu.add(playItem); + this.gameMenu.add(loadItem); + this.gameMenu.add(saveItem); + this.gameMenu.addSeparator(); + this.gameMenu.add(quitItem); + + this.helpMenu = new JMenu("Help"); + this.aboutItem = new JMenuItem("About"); + this.helpMenu.add(this.aboutItem); + // for extending the code change here to your own class/implementation of an ActionListener or + // extend method this.actionPerformed + this.aboutItem.addActionListener(this); + + JMenuBar mb = new JMenuBar(); + mb.add(this.gameMenu); + mb.add(this.helpMenu); + + frame.setJMenuBar(mb); + + this.button = new JButton("(Re)Start"); + this.button.addActionListener(this); + + this.button2 = new JButton("Pause"); + this.button2.addActionListener(this); + + this.buttonPanel = new JPanel(); + this.buttonPanel.setLayout(new BoxLayout(this.buttonPanel, BoxLayout.X_AXIS)); + this.buttonPanel.add(this.button); + this.buttonPanel.add(this.button2); + + this.panel.add(this.buttonPanel); + + + // make it visible (render window) + + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + + this.canvas.setVisible(true); + frame.pack(); + frame.setVisible(true); + } + + public HashMap getCurrentKey() { + return canvas.getCurrentKey(); + } + + public Stack getKeyEvents() { + return this.canvas.getKeyEvents(); + } + + public Stack getMouseEvents() { + return this.canvas.getMouseEvents(); + } + + + public void repaint() { + canvas.repaint(); + } + + public void setPlayground(Playground pg) { + this.canvas.setPlayground(pg); + this.frame.validate(); + this.frame.pack(); + } + + public boolean isPainting() { + return canvas.stillPainting(); + } + + public void setPainting() { + canvas.setPainting(); + } + + public void waitWhilePainting() { + canvas.setPainting(); + canvas.repaint(); + canvas.waitWhilePainting(); + } + + + public static int getNewAction() { + return newAction; + } + + + public static void resetAction() { + newAction = -1; + } + + + public void grabFocus() { + canvas.grabFocus(); + } + + + /** + * interface implementation of ActionListener to respond to GUI element actions. It sets the + * attribute of newAction which is read by GameLoop.runGame to check for GUI actions. + */ + public void actionPerformed(ActionEvent ae) { + if (ae.getSource() == this.quitItem) { + System.exit(0); + } else if (ae.getSource() == this.playItem) { + logger.info("new game"); + newAction = ACTION_NEW; + } else if (ae.getSource() == this.button) { + logger.info("click"); + newAction = ACTION_NEW; + } else if (ae.getSource() == this.button2) { + logger.info("click2"); + newAction = ACTION_PAUSE; + } else if (ae.getSource() == this.saveItem) { + logger.info("save"); + newAction = ACTION_SAVE; + } else if (ae.getSource() == this.loadItem) { + logger.info("load"); + newAction = ACTION_LOAD; + } else if (ae.getSource() == this.aboutItem) { + logger.info("about"); + newAction = ACTION_ABOUT; + AboutFrame about = new AboutFrame(); + about.show(); + } + } + + +} diff --git a/prog2-codebase/GameProject/video/alexG.jpg b/prog2-codebase/GameProject/video/alexG.jpg new file mode 100644 index 0000000..bc03a8c Binary files /dev/null and b/prog2-codebase/GameProject/video/alexG.jpg differ diff --git a/prog2-codebase/GameProject/video/alien (Custom).png b/prog2-codebase/GameProject/video/alien (Custom).png new file mode 100644 index 0000000..d36e0a8 Binary files /dev/null and b/prog2-codebase/GameProject/video/alien (Custom).png differ diff --git a/prog2-codebase/GameProject/video/alien.png b/prog2-codebase/GameProject/video/alien.png new file mode 100644 index 0000000..9c31e6d Binary files /dev/null and b/prog2-codebase/GameProject/video/alien.png differ diff --git a/prog2-codebase/GameProject/video/alien.txt b/prog2-codebase/GameProject/video/alien.txt new file mode 100644 index 0000000..7564490 --- /dev/null +++ b/prog2-codebase/GameProject/video/alien.txt @@ -0,0 +1 @@ +alien.png 1,0 \ No newline at end of file diff --git a/prog2-codebase/GameProject/video/alien2.png b/prog2-codebase/GameProject/video/alien2.png new file mode 100644 index 0000000..bc92949 Binary files /dev/null and b/prog2-codebase/GameProject/video/alien2.png differ diff --git a/prog2-codebase/GameProject/video/bored.txt b/prog2-codebase/GameProject/video/bored.txt new file mode 100644 index 0000000..daf82e0 --- /dev/null +++ b/prog2-codebase/GameProject/video/bored.txt @@ -0,0 +1,3 @@ +boredAlien0.png +boredAlien1.png +boredAlien2.png \ No newline at end of file diff --git a/prog2-codebase/GameProject/video/boredAlien0.png b/prog2-codebase/GameProject/video/boredAlien0.png new file mode 100644 index 0000000..4cab2d0 Binary files /dev/null and b/prog2-codebase/GameProject/video/boredAlien0.png differ diff --git a/prog2-codebase/GameProject/video/boredAlien1.png b/prog2-codebase/GameProject/video/boredAlien1.png new file mode 100644 index 0000000..c323a60 Binary files /dev/null and b/prog2-codebase/GameProject/video/boredAlien1.png differ diff --git a/prog2-codebase/GameProject/video/boredAlien2.png b/prog2-codebase/GameProject/video/boredAlien2.png new file mode 100644 index 0000000..bba937b Binary files /dev/null and b/prog2-codebase/GameProject/video/boredAlien2.png differ diff --git a/prog2-codebase/GameProject/video/heart.txt b/prog2-codebase/GameProject/video/heart.txt new file mode 100644 index 0000000..70ff6cd --- /dev/null +++ b/prog2-codebase/GameProject/video/heart.txt @@ -0,0 +1,2 @@ +heart0.png 0,5 +heart1.png 0,5 \ No newline at end of file diff --git a/prog2-codebase/GameProject/video/heart0.png b/prog2-codebase/GameProject/video/heart0.png new file mode 100644 index 0000000..3f92e01 Binary files /dev/null and b/prog2-codebase/GameProject/video/heart0.png differ diff --git a/prog2-codebase/GameProject/video/heart1.png b/prog2-codebase/GameProject/video/heart1.png new file mode 100644 index 0000000..134ff07 Binary files /dev/null and b/prog2-codebase/GameProject/video/heart1.png differ diff --git a/prog2-codebase/GameProject/video/player.png b/prog2-codebase/GameProject/video/player.png new file mode 100644 index 0000000..d659c9d Binary files /dev/null and b/prog2-codebase/GameProject/video/player.png differ diff --git a/prog2-codebase/GameProject/video/player.txt b/prog2-codebase/GameProject/video/player.txt new file mode 100644 index 0000000..5c13574 --- /dev/null +++ b/prog2-codebase/GameProject/video/player.txt @@ -0,0 +1 @@ +player.png 1,0 \ No newline at end of file diff --git a/prog2-codebase/GameProject/video/relaunch.txt b/prog2-codebase/GameProject/video/relaunch.txt new file mode 100644 index 0000000..17b4621 --- /dev/null +++ b/prog2-codebase/GameProject/video/relaunch.txt @@ -0,0 +1,31 @@ +verzstrultur anpassen +frage nach laden/speichern von zuständen. alle sonstigen vaeiablen persistent +einfah plaxground.flags und gameObejcts wegsoeichern er JSON. muss nur member annotieren dann passt das einfach. + + +collider-struktur überdenken buw dokumentieren + + +gameobject: wrapper, nur Darstellung wird hier definiert. Ableitungen ändern nur Darstellung sonst nichts + controller + list + + x,y,vx,vy + + collisionMode RAUS + + neben __init__ auch setup/reset methode + + warum braucht collider zugriff auf controller und playground?? + +playground: + + OK mergr with keyboardController + + neben __init__ auch setup/reset methode + + OK elegantere Lösung wie gameMain auf keys der LEvels zugreift + + + + diff --git a/prog2-codebase/GameProject/video/sweetAlien.txt b/prog2-codebase/GameProject/video/sweetAlien.txt new file mode 100644 index 0000000..b275354 --- /dev/null +++ b/prog2-codebase/GameProject/video/sweetAlien.txt @@ -0,0 +1,8 @@ +sweetAlien0.png 0,2 +sweetAlien1.png 0,5 +sweetAlien2.png 0,2 +sweetAlien3.png 0,5 +sweetAlien4.png 0,4 +sweetAlien5.png 0,2 +sweetAlien6.png 0,3 +sweetAlien7.png 0,5 \ No newline at end of file diff --git a/prog2-codebase/GameProject/video/sweetAlien0.png b/prog2-codebase/GameProject/video/sweetAlien0.png new file mode 100644 index 0000000..f3d2407 Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien0.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien1.png b/prog2-codebase/GameProject/video/sweetAlien1.png new file mode 100644 index 0000000..9a5177a Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien1.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien2.png b/prog2-codebase/GameProject/video/sweetAlien2.png new file mode 100644 index 0000000..6c8b3e0 Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien2.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien3.png b/prog2-codebase/GameProject/video/sweetAlien3.png new file mode 100644 index 0000000..5a0908b Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien3.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien4.png b/prog2-codebase/GameProject/video/sweetAlien4.png new file mode 100644 index 0000000..09f7769 Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien4.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien5.png b/prog2-codebase/GameProject/video/sweetAlien5.png new file mode 100644 index 0000000..da58075 Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien5.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien6.png b/prog2-codebase/GameProject/video/sweetAlien6.png new file mode 100644 index 0000000..4dab7a5 Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien6.png differ diff --git a/prog2-codebase/GameProject/video/sweetAlien7.png b/prog2-codebase/GameProject/video/sweetAlien7.png new file mode 100644 index 0000000..27f6a1c Binary files /dev/null and b/prog2-codebase/GameProject/video/sweetAlien7.png differ diff --git a/prog2-codebase/GameProject/video/test.txt b/prog2-codebase/GameProject/video/test.txt new file mode 100644 index 0000000..5e85e9e --- /dev/null +++ b/prog2-codebase/GameProject/video/test.txt @@ -0,0 +1 @@ +1 071 1.23 Dies 0xF3 ist 1,4 ein0.png Test \ No newline at end of file diff --git a/spaceinvaders/GameProject/bin/base/MultiLevelGame.class b/spaceinvaders/GameProject/bin/base/MultiLevelGame.class index ed046b0..b0a7191 100644 Binary files a/spaceinvaders/GameProject/bin/base/MultiLevelGame.class and b/spaceinvaders/GameProject/bin/base/MultiLevelGame.class differ diff --git a/spaceinvaders/GameProject/bin/playground/LevelWithBox.class b/spaceinvaders/GameProject/bin/playground/LevelWithBox.class new file mode 100644 index 0000000..4d9c8a7 Binary files /dev/null and b/spaceinvaders/GameProject/bin/playground/LevelWithBox.class differ diff --git a/spaceinvaders/GameProject/doc/allclasses-index.html b/spaceinvaders/GameProject/doc/allclasses-index.html new file mode 100644 index 0000000..f088147 --- /dev/null +++ b/spaceinvaders/GameProject/doc/allclasses-index.html @@ -0,0 +1,208 @@ + + + + +All Classes and Interfaces + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      All Classes and Interfaces

      +
      +
      +
      Classes
      +
      +
      Class
      +
      Description
      + +
       
      + +
       
      + +
       
      + +
       
      + +
       
      + +
      +
      Collider for round objects
      +
      + +
      +
      abstract base class for all Colliders to detect collisions between GameObjects
      +
      + +
      +
      An EgoController which cannot move through obstacle objects (is collission aware).
      +
      + +
      +
      Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
      +
      + +
       
      + +
      +
      This class controls the space invaders.
      +
      + +
       
      + +
      +
      Controls background stars.
      +
      + +
      +
      Main class starting any game, contains main().
      +
      + +
      +
      The class GameObject represents a (possibly animated) object appearing in a level of the + game.
      +
      + +
      +
      creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
      +
      + +
       
      + +
      +
      extends SpaceInvadersLevel with a boring start message
      +
      + +
      +
      extends extends SpaceInvadersLevel with a different startup message.
      +
      + +
      +
      extends SpaceInvadersLevel with a ZigZack move of the enemies in + Level3.createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different Level3.getStartupMessage().
      +
      + +
      +
      extends extends SpaceInvadersLevel + + Hit aliens twice to kill them + they say AUA when not destroyed +
      +
      + +
       
      + +
       
      + +
       
      + +
      +
      Class that realizes all the game logic of a very simple game level.
      +
      + +
      +
      extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
      +
      + +
       
      + +
      +
      Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
      +
      + +
       
      + +
       
      + +
       
      + +
      +
      Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
      +
      + +
      +
      Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
      +
      + +
       
      + +
      +
      a Collider for Rectangles, usually used for RectObject instances.
      +
      + +
      +
      A rectangle object.
      +
      + +
       
      + +
       
      + +
      +
      Class that realizes all the game logic of a very simple game level.
      +
      + +
      +
      Rendering an object as a text of a specified color, size and font.
      +
      + +
      +
      Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text.
      +
      + +
       
      +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/allpackages-index.html b/spaceinvaders/GameProject/doc/allpackages-index.html new file mode 100644 index 0000000..3f5cbd0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/allpackages-index.html @@ -0,0 +1,80 @@ + + + + +All Packages + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      All Packages

      +
      +
      Package Summary
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      + +
       
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/GameLoop.html b/spaceinvaders/GameProject/doc/base/GameLoop.html new file mode 100644 index 0000000..adbd011 --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/GameLoop.html @@ -0,0 +1,254 @@ + + + + +GameLoop + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package base
      +

      Class GameLoop

      +
      +
      java.lang.Object +
      base.GameLoop
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      MultiLevelGame
      +
      +
      +
      public class GameLoop +extends Object
      +
      Main class starting any game, contains main(). Apart from that, this class manages all + non-logical functionalities which should be hidden from a game designer like: +
        +
      • Setting up windows, panels, buttons, action callbacks, ... +
      • Reading keyboard inputs +
      • Redrawing game window if necessary +
      • managing the game time and calling the appropriate GameObject or Playground + methods periodically, at every time step of the game. +
      + There will normally never be a need to modify this file, a designer/game programmer should always + redefine the GameObject and Playground classes and implement new functionality + there. To make a long story short
      +
      +
      +
        + +
      • +
        +

        Field Summary

        +
        Fields
        +
        +
        Modifier and Type
        +
        Field
        +
        Description
        +
        static int
        + +
        +
        Pixel width of Game GUI ( above 0)
        +
        +
        static int
        + +
        +
        Pixel height of Game GUI (above 0)
        +
        +
        +
        +
      • + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
        +
        constructor which calls defineLevels(), which adds all levels of this game.
        +
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        static void
        +
        main(String[] args)
        +
        +
        main to start the whole application.
        +
        +
        void
        +
        runGame(String[] args)
        +
        +
        loops over all levels and implements the game loop to update continuously the level + during play time
        +
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          SIZEX

          +
          public static int SIZEX
          +
          Pixel width of Game GUI ( above 0)
          +
          +
        • +
        • +
          +

          SIZEY

          +
          public static int SIZEY
          +
          Pixel height of Game GUI (above 0)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          GameLoop

          +
          public GameLoop()
          +
          constructor which calls defineLevels(), which adds all levels of this game.
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          runGame

          +
          public void runGame(String[] args) + throws IOException
          +
          loops over all levels and implements the game loop to update continuously the level + during play time
          +
          +
          Parameters:
          +
          args - command line arguments forwarded (currently ignored)
          +
          Throws:
          +
          IOException - if hitghscore.txt cannot be written.
          +
          +
          +
        • +
        • +
          +

          main

          +
          public static void main(String[] args) + throws IOException
          +
          main to start the whole application. + initializes the levels ArrayList of Playground instances (levels) to be played with one level SpaceInvadersLevel in constructor of GameLoop().
          +
          +
          Parameters:
          +
          args - Java default command line args, forwarded to runGame(String[])
          +
          Throws:
          +
          IOException - in case highscore.txt cannot be written.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/MultiLevelGame.html b/spaceinvaders/GameProject/doc/base/MultiLevelGame.html new file mode 100644 index 0000000..998a3a3 --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/MultiLevelGame.html @@ -0,0 +1,178 @@ + + + + +MultiLevelGame + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package base
      +

      Class MultiLevelGame

      +
      +
      java.lang.Object +
      base.GameLoop +
      base.MultiLevelGame
      +
      +
      +
      +
      +
      public class MultiLevelGame +extends GameLoop
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          MultiLevelGame

          +
          public MultiLevelGame()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/class-use/GameLoop.html b/spaceinvaders/GameProject/doc/base/class-use/GameLoop.html new file mode 100644 index 0000000..ab02254 --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/class-use/GameLoop.html @@ -0,0 +1,83 @@ + + + + +Uses of Class base.GameLoop + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      base.GameLoop

      +
      +
      Packages that use GameLoop
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/class-use/MultiLevelGame.html b/spaceinvaders/GameProject/doc/base/class-use/MultiLevelGame.html new file mode 100644 index 0000000..f37abfb --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/class-use/MultiLevelGame.html @@ -0,0 +1,58 @@ + + + + +Uses of Class base.MultiLevelGame + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      base.MultiLevelGame

      +
      +No usage of base.MultiLevelGame
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/package-summary.html b/spaceinvaders/GameProject/doc/base/package-summary.html new file mode 100644 index 0000000..5e5403c --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/package-summary.html @@ -0,0 +1,87 @@ + + + + +base + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package base

      +
      +
      +
      package base
      +
      +
        +
      • +
        +
        Classes
        +
        +
        Class
        +
        Description
        + +
        +
        Main class starting any game, contains main().
        +
        + +
         
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/package-tree.html b/spaceinvaders/GameProject/doc/base/package-tree.html new file mode 100644 index 0000000..54141c1 --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/package-tree.html @@ -0,0 +1,76 @@ + + + + +base Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package base

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/base/package-use.html b/spaceinvaders/GameProject/doc/base/package-use.html new file mode 100644 index 0000000..d5218d1 --- /dev/null +++ b/spaceinvaders/GameProject/doc/base/package-use.html @@ -0,0 +1,82 @@ + + + + +Uses of Package base + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      base

      +
      +
      Packages that use base
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      +
        +
      • +
        +
        Classes in base used by base
        +
        +
        Class
        +
        Description
        + +
        +
        Main class starting any game, contains main().
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/CircleCollider.html b/spaceinvaders/GameProject/doc/collider/CircleCollider.html new file mode 100644 index 0000000..6d84f5a --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/CircleCollider.html @@ -0,0 +1,237 @@ + + + + +CircleCollider + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package collider
      +

      Class CircleCollider

      +
      +
      java.lang.Object +
      collider.Collider +
      collider.CircleCollider
      +
      +
      +
      +
      +
      public class CircleCollider +extends Collider
      +
      Collider for round objects
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          CircleCollider

          +
          public CircleCollider(String id, + GameObject o, + double radius)
          +
          Constructor which sets the radius to be respected for collisions.
          +
          +
          Parameters:
          +
          id - String unique name for the collider instance
          +
          o - GameObject it belongs to
          +
          radius - radius in pixels to use as a size
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          toString

          +
          public String toString()
          +
          simple concatenation of all attributes (x,y,r)
          +
          +
          Overrides:
          +
          toString in class Collider
          +
          +
          +
        • +
        • +
          +

          checkCollisionCircCirc

          +
          public boolean checkCollisionCircCirc(Collider _c2) + throws Exception
          +
          calculates the collission of this with other collider
          +
          +
          Parameters:
          +
          _c2 - the other collider
          +
          Returns:
          +
          true if a collision was detected
          +
          Throws:
          +
          Exception - in case the math operations are invalid (due to illegal values of x y or + radius)
          +
          +
          +
        • +
        • +
          +

          collidesWith

          +
          public boolean collidesWith(Collider other)
          +
          Description copied from class: Collider
          +
          checks the collission with another collider instance.
          +
          +
          Specified by:
          +
          collidesWith in class Collider
          +
          Parameters:
          +
          other - the instance to compare to
          +
          Returns:
          +
          true if the colliders collide (touch or overlap)
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/Collider.html b/spaceinvaders/GameProject/doc/collider/Collider.html new file mode 100644 index 0000000..03fc178 --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/Collider.html @@ -0,0 +1,346 @@ + + + + +Collider + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package collider
      +

      Class Collider

      +
      +
      java.lang.Object +
      collider.Collider
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      CircleCollider, RectCollider
      +
      +
      +
      public abstract class Collider +extends Object
      +
      abstract base class for all Colliders to detect collisions between GameObjects
      +
      +
      +
        + +
      • +
        +

        Field Summary

        +
        Fields
        +
        +
        Modifier and Type
        +
        Field
        +
        Description
        + + +
        +
        unique internal name for Collider
        +
        +
        +
        +
      • + +
      • +
        +

        Constructor Summary

        +
        Constructors
        +
        +
        Constructor
        +
        Description
        + +
         
        +
        +
        +
      • + +
      • +
        +

        Method Summary

        +
        +
        +
        +
        +
        Modifier and Type
        +
        Method
        +
        Description
        +
        abstract boolean
        + +
        +
        checks the collission with another collider instance.
        +
        + + +
        +
        returns the internal unique name
        +
        +
        double
        + +
        +
        returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
        +
        +
        double
        + +
        +
        returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
        +
        +
        void
        + +
        +
        setter for GameController
        +
        +
        void
        +
        setObject(GameObject gameObject)
        +
        +
        setter for corresponding GameObject
        +
        + +
        setOffsets(double dx, + double dy)
        +
        +
        setter for offset values to be used relative to GameObject center. default is zero.
        +
        +
        void
        + +
        +
        setter for Playground instance this collider belongs to
        +
        + + +
         
        +
        +
        +
        +
        +

        Methods inherited from class java.lang.Object

        +equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
        +
        +
      • +
      +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          id

          +
          public String id
          +
          unique internal name for Collider
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Collider

          +
          public Collider(String id, + GameObject o)
          +
          +
          Parameters:
          +
          id - unique name for Collider (internally)
          +
          o - GameObject instance it belongs to
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          setOffsets

          +
          public Collider setOffsets(double dx, + double dy)
          +
          setter for offset values to be used relative to GameObject center. default is zero.
          +
          +
          Parameters:
          +
          dx - offset in X direction (default 0)
          +
          dy - offset in Y direction (default 0)
          +
          Returns:
          +
          this instance of Collider
          +
          +
          +
        • +
        • +
          +

          toString

          +
          public String toString()
          +
          +
          Overrides:
          +
          toString in class Object
          +
          +
          +
        • +
        • +
          +

          getX

          +
          public double getX()
          +
          returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
          +
          +
          Returns:
          +
          X value
          +
          +
          +
        • +
        • +
          +

          getY

          +
          public double getY()
          +
          returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
          +
          +
          Returns:
          +
          Y value
          +
          +
          +
        • +
        • +
          +

          getId

          +
          public String getId()
          +
          returns the internal unique name
          +
          +
          Returns:
          +
          the String with the name
          +
          +
          +
        • +
        • +
          +

          setObject

          +
          public void setObject(GameObject gameObject)
          +
          setter for corresponding GameObject
          +
          +
          Parameters:
          +
          gameObject - to be saved in attribute
          +
          +
          +
        • +
        • +
          +

          setController

          +
          public void setController(ObjectController controller)
          +
          setter for GameController
          +
          +
          Parameters:
          +
          controller - to be saved in attribute
          +
          +
          +
        • +
        • +
          +

          setPlayground

          +
          public void setPlayground(Playground playground)
          +
          setter for Playground instance this collider belongs to
          +
          +
          Parameters:
          +
          playground - instance to be stored in attribute
          +
          +
          +
        • +
        • +
          +

          collidesWith

          +
          public abstract boolean collidesWith(Collider other)
          +
          checks the collission with another collider instance.
          +
          +
          Parameters:
          +
          other - the instance to compare to
          +
          Returns:
          +
          true if the colliders collide (touch or overlap)
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/RectCollider.html b/spaceinvaders/GameProject/doc/collider/RectCollider.html new file mode 100644 index 0000000..10b607b --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/RectCollider.html @@ -0,0 +1,260 @@ + + + + +RectCollider + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package collider
      +

      Class RectCollider

      +
      +
      java.lang.Object +
      collider.Collider +
      collider.RectCollider
      +
      +
      +
      +
      +
      public class RectCollider +extends Collider
      +
      a Collider for Rectangles, usually used for RectObject instances.
      +
      +
      See Also:
      +
      + +
      +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          RectCollider

          +
          public RectCollider(String id, + GameObject o, + double w, + double h)
          +
          initializes this RectCollider. + calls superclass constructor of Collider(String, GameObject) with params String id and GameObject o.
          +
          +
          Parameters:
          +
          id - String unique name for this RectCollider
          +
          o - GameObject instance this RectCollider belongs to (cannot be null)
          +
          w - width in pixels for the collider dimensions (> 0)
          +
          h - height in pixels for the collider dimensions (>0)
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          toString

          +
          public String toString()
          +
          +
          Overrides:
          +
          toString in class Collider
          +
          +
          +
        • +
        • +
          +

          checkCollisionRectRect

          +
          public boolean checkCollisionRectRect(Collider other)
          +
          checks collision with other Collider, which needs to be a RectCollider, too.
          +
          +
          Parameters:
          +
          other - RectCollider (is casted) to calculate collision with
          +
          Returns:
          +
          true if collission is detected
          +
          +
          +
        • +
        • +
          +

          checkCollisionRectCirc

          +
          public boolean checkCollisionRectCirc(Collider other)
          +
          checks collision with other Collider, which needs to be a CircleCollider
          +
          +
          Parameters:
          +
          other - CircleCollider (is casted) to calculate collision with
          +
          Returns:
          +
          true if collission is detected
          +
          +
          +
        • +
        • +
          +

          collidesWith

          +
          public boolean collidesWith(Collider other)
          +
          Description copied from class: Collider
          +
          checks the collission with another collider instance.
          +
          +
          Specified by:
          +
          collidesWith in class Collider
          +
          Parameters:
          +
          other - the instance to compare to
          +
          Returns:
          +
          true if the colliders collide (touch or overlap)
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/class-use/CircleCollider.html b/spaceinvaders/GameProject/doc/collider/class-use/CircleCollider.html new file mode 100644 index 0000000..27cc79f --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/class-use/CircleCollider.html @@ -0,0 +1,58 @@ + + + + +Uses of Class collider.CircleCollider + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      collider.CircleCollider

      +
      +No usage of collider.CircleCollider
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/class-use/Collider.html b/spaceinvaders/GameProject/doc/collider/class-use/Collider.html new file mode 100644 index 0000000..bc221db --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/class-use/Collider.html @@ -0,0 +1,172 @@ + + + + +Uses of Class collider.Collider + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      collider.Collider

      +
      +
      Packages that use Collider
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/class-use/RectCollider.html b/spaceinvaders/GameProject/doc/collider/class-use/RectCollider.html new file mode 100644 index 0000000..3c1caf2 --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/class-use/RectCollider.html @@ -0,0 +1,58 @@ + + + + +Uses of Class collider.RectCollider + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      collider.RectCollider

      +
      +No usage of collider.RectCollider
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/package-summary.html b/spaceinvaders/GameProject/doc/collider/package-summary.html new file mode 100644 index 0000000..1e47136 --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/package-summary.html @@ -0,0 +1,93 @@ + + + + +collider + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package collider

      +
      +
      +
      package collider
      +
      +
        +
      • +
        +
        Classes
        +
        +
        Class
        +
        Description
        + +
        +
        Collider for round objects
        +
        + +
        +
        abstract base class for all Colliders to detect collisions between GameObjects
        +
        + +
        +
        a Collider for Rectangles, usually used for RectObject instances.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/package-tree.html b/spaceinvaders/GameProject/doc/collider/package-tree.html new file mode 100644 index 0000000..edd6206 --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/package-tree.html @@ -0,0 +1,77 @@ + + + + +collider Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package collider

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/collider/package-use.html b/spaceinvaders/GameProject/doc/collider/package-use.html new file mode 100644 index 0000000..edad07c --- /dev/null +++ b/spaceinvaders/GameProject/doc/collider/package-use.html @@ -0,0 +1,97 @@ + + + + +Uses of Package collider + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      collider

      +
      +
      Packages that use collider
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      +
      +
      +
        +
      • +
        +
        Classes in collider used by collider
        +
        +
        Class
        +
        Description
        + +
        +
        abstract base class for all Colliders to detect collisions between GameObjects
        +
        +
        +
        +
      • +
      • +
        +
        Classes in collider used by gameobjects
        +
        +
        Class
        +
        Description
        + +
        +
        abstract base class for all Colliders to detect collisions between GameObjects
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/constant-values.html b/spaceinvaders/GameProject/doc/constant-values.html new file mode 100644 index 0000000..6d08bf1 --- /dev/null +++ b/spaceinvaders/GameProject/doc/constant-values.html @@ -0,0 +1,183 @@ + + + + +Constant Field Values + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Constant Field Values

      +
      +

      Contents

      + +
      +
      +
      +

      gameobjects.*

      +
        +
      • +
        gameobjects.GameObject
        +
        +
        Modifier and Type
        +
        Constant Field
        +
        Value
        +
        public static final int
        + +
        2
        +
        public static final int
        + +
        0
        +
        public static final int
        + +
        1
        +
        +
      • +
      +
      +
      +

      playground.*

      +
        +
      • +
        playground.Level4
        +
        +
        Modifier and Type
        +
        Constant Field
        +
        Value
        +
        public static final int
        + +
        2
        +
        +
      • +
      • +
        playground.LevelHitTwice
        +
        +
        Modifier and Type
        +
        Constant Field
        +
        Value
        +
        public static final int
        + +
        2
        +
        +
      • +
      • +
        playground.Playground
        +
        +
        Modifier and Type
        +
        Constant Field
        +
        Value
        +
        public static final int
        + +
        3
        +
        public static final int
        + +
        1
        +
        public static final int
        + +
        2
        +
        +
      • +
      • + +
        +
        Modifier and Type
        +
        Constant Field
        +
        Value
        +
        public static final double
        + +
        220.0
        +
        public static final double
        + +
        175.0
        +
        +
      • +
      +
      +
      +

      ui.*

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/CollisionAwareEgoController.html b/spaceinvaders/GameProject/doc/controller/CollisionAwareEgoController.html new file mode 100644 index 0000000..0299b0f --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/CollisionAwareEgoController.html @@ -0,0 +1,240 @@ + + + + +CollisionAwareEgoController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class CollisionAwareEgoController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.EgoController +
      controller.CollisionAwareEgoController
      +
      +
      +
      +
      +
      +
      public class CollisionAwareEgoController +extends EgoController
      +
      An EgoController which cannot move through obstacle objects (is collission aware). Only respects + GameObjects that have the String 'obstacle' in their name.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          CollisionAwareEgoController

          +
          public CollisionAwareEgoController(double egoRad)
          +
          +
          Parameters:
          +
          egoRad - radius of ego object to be used.
          +
          +
          +
        • +
        • +
          +

          CollisionAwareEgoController

          +
          public CollisionAwareEgoController(double egoRad, + File soundOnShot)
          +
          +
          Parameters:
          +
          egoRad - radius of ego object to be used.
          +
          soundOnShot - WAV file to be played on shot
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          saveDynamicState

          +
          public void saveDynamicState()
          +
          +
        • +
        • +
          +

          restoreDynamicState

          +
          public void restoreDynamicState()
          +
          +
        • +
        • +
          +

          stopObject

          +
          public boolean stopObject()
          +
          Description copied from class: EgoController
          +
          checks the position and respects level boundaries and own radius or width/height set on constructor.
          +
          +
          Overrides:
          +
          stopObject in class EgoController
          +
          Returns:
          +
          true if the object reached the boundaries of the level, false otherwise
          +
          +
          +
        • +
        • +
          +

          onSpace

          +
          public void onSpace(KeyEvent e, + GameObject ego)
          +
          Description copied from class: EgoController
          +
          behavior for shooting on key space
          +
          +
          Overrides:
          +
          onSpace in class EgoController
          +
          Parameters:
          +
          e - KeyEvent of the space key
          +
          ego - EgoObject instance (used to determine position of shot object's start)
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/EgoController.html b/spaceinvaders/GameProject/doc/controller/EgoController.html new file mode 100644 index 0000000..685db06 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/EgoController.html @@ -0,0 +1,292 @@ + + + + +EgoController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class EgoController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.EgoController
      +
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      CollisionAwareEgoController
      +
      +
      +
      public class EgoController +extends ObjectController
      +
      Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          EgoController

          +
          public EgoController(double egoRad)
          +
          constructor that gives the ego controller a radius to stop the ego object when it reaches the level boundaries.
          +
          +
          Parameters:
          +
          egoRad - radius to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
          +
          +
          +
        • +
        • +
          +

          EgoController

          +
          public EgoController(double width, + double height)
          +
          constructor that gives the ego controller a width and height to stop the ego object when it reaches the level boundaries.
          +
          +
          Parameters:
          +
          width - width to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
          +
          height - height to use as a boundary stop for level borders (usually use the same dimensions as your ego object)
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          onUp

          +
          public void onUp(KeyEvent kc, + GameObject ego)
          +
          +
        • +
        • +
          +

          onDown

          +
          public void onDown(KeyEvent kc, + GameObject ego)
          +
          +
        • +
        • +
          +

          onLeft

          +
          public void onLeft(KeyEvent kc, + GameObject ego)
          +
          +
        • +
        • +
          +

          onRight

          +
          public void onRight(KeyEvent kc, + GameObject ego)
          +
          +
        • +
        • +
          +

          onStop

          +
          public void onStop(KeyEvent kc, + GameObject ego)
          +
          +
        • +
        • +
          +

          stopObject

          +
          public boolean stopObject()
          +
          checks the position and respects level boundaries and own radius or width/height set on constructor.
          +
          +
          Returns:
          +
          true if the object reached the boundaries of the level, false otherwise
          +
          +
          +
        • +
        • +
          +

          onSpace

          +
          public void onSpace(KeyEvent e, + GameObject ego)
          +
          behavior for shooting on key space
          +
          +
          Parameters:
          +
          e - KeyEvent of the space key
          +
          ego - EgoObject instance (used to determine position of shot object's start)
          +
          +
          +
        • +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          updates position based on key events (mouse currently ignored)
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/EnemyController.html b/spaceinvaders/GameProject/doc/controller/EnemyController.html new file mode 100644 index 0000000..5a9309b --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/EnemyController.html @@ -0,0 +1,184 @@ + + + + +EnemyController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class EnemyController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.EnemyController
      +
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      ZickZackController
      +
      +
      +
      public class EnemyController +extends ObjectController
      +
      This class controls the space invaders.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          EnemyController

          +
          public EnemyController()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/FallingStarController.html b/spaceinvaders/GameProject/doc/controller/FallingStarController.html new file mode 100644 index 0000000..beca9ab --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/FallingStarController.html @@ -0,0 +1,180 @@ + + + + +FallingStarController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class FallingStarController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.FallingStarController
      +
      +
      +
      +
      +
      public class FallingStarController +extends ObjectController
      +
      Controls background stars. When they touch the bottom of the display they reappear on top.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          FallingStarController

          +
          public FallingStarController()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/LimitedTimeController.html b/spaceinvaders/GameProject/doc/controller/LimitedTimeController.html new file mode 100644 index 0000000..0371020 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/LimitedTimeController.html @@ -0,0 +1,191 @@ + + + + +LimitedTimeController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class LimitedTimeController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.LimitedTimeController
      +
      +
      +
      +
      +
      public class LimitedTimeController +extends ObjectController
      +
      Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          LimitedTimeController

          +
          public LimitedTimeController(double g0, + double duration)
          +
          Constructor.
          +
          +
          Parameters:
          +
          g0 - int initial game time at creation
          +
          duration - int duration in seconds
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/MineController.html b/spaceinvaders/GameProject/doc/controller/MineController.html new file mode 100644 index 0000000..e98af5a --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/MineController.html @@ -0,0 +1,179 @@ + + + + +MineController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class MineController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.MineController
      +
      +
      +
      +
      +
      public class MineController +extends ObjectController
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          MineController

          +
          public MineController(double lineSpeed)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/ObjectController.html b/spaceinvaders/GameProject/doc/controller/ObjectController.html new file mode 100644 index 0000000..ad1e312 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/ObjectController.html @@ -0,0 +1,316 @@ + + + + +ObjectController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class ObjectController

      +
      +
      java.lang.Object +
      controller.ObjectController
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      EgoController, EnemyController, FallingStarController, LimitedTimeController, MineController, SimpleShotController
      +
      +
      +
      public abstract class ObjectController +extends Object
      +
      Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn. The most important method here is updateObject(): this method is, by various + indirections, called exactly once per game time step for every object that is on the playground. + It has, by virtue of the member variables gameObject full access to +
        +
      • the object it is controlling +
      • the playground this object belongs to +
      + Typically, updateObject would check whether an object leaves the screen to react appropriately. + In that case the object can be marked for deletion (by adding it to the flag "deleted" that is + always defined for any playground), but of course other reactions are possible like rebounding, + emerging on the other side, ...
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ObjectController

          +
          public ObjectController()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          setObject

          +
          public void setObject(GameObject gameObject)
          +
          +
        • +
        • +
          +

          setDummy

          +
          public void setDummy(String x)
          +
          +
        • +
        • +
          +

          updateObject

          +
          public abstract void updateObject()
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the gameObject correctly.
          +
          +
        • +
        • +
          +

          applySpeedVector

          +
          public void applySpeedVector()
          +
          Convenience method: simply moves the object forward one step from its present position, using + its present speed.
          +
          +
        • +
        • +
          +

          getTimestep

          +
          public double getTimestep()
          +
          +
        • +
        • +
          +

          getX

          +
          public double getX()
          +
          +
        • +
        • +
          +

          getY

          +
          public double getY()
          +
          +
        • +
        • +
          +

          getVX

          +
          public double getVX()
          +
          +
        • +
        • +
          +

          getVY

          +
          public double getVY()
          +
          +
        • +
        • +
          +

          setX

          +
          public void setX(double x)
          +
          +
        • +
        • +
          +

          setY

          +
          public void setY(double y)
          +
          +
        • +
        • +
          +

          setVX

          +
          public void setVX(double vx)
          +
          +
        • +
        • +
          +

          setVY

          +
          public void setVY(double vy)
          +
          +
        • +
        • +
          +

          getPlayground

          +
          public Playground getPlayground()
          +
          +
        • +
        • +
          +

          setPlayground

          +
          public void setPlayground(Playground playground)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/SimpleShotController.html b/spaceinvaders/GameProject/doc/controller/SimpleShotController.html new file mode 100644 index 0000000..fed6c6a --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/SimpleShotController.html @@ -0,0 +1,179 @@ + + + + +SimpleShotController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class SimpleShotController

      +
      +
      java.lang.Object +
      controller.ObjectController +
      controller.SimpleShotController
      +
      +
      +
      +
      +
      public class SimpleShotController +extends ObjectController
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          SimpleShotController

          +
          public SimpleShotController()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Specified by:
          +
          updateObject in class ObjectController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/ZickZackController.html b/spaceinvaders/GameProject/doc/controller/ZickZackController.html new file mode 100644 index 0000000..f3c5c2f --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/ZickZackController.html @@ -0,0 +1,183 @@ + + + + +ZickZackController + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package controller
      +

      Class ZickZackController

      +
      + +
      +
      +
      public class ZickZackController +extends EnemyController
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          ZickZackController

          +
          public ZickZackController(double gameTime, + double dt)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          Description copied from class: ObjectController
          +
          Is called once every game time step by the game itself. NEVER call this directly, not + necessary!
          + The method can do whatever it likes, including nothing. The attribute ObjectController.gameObject + contains a reference to the controlled object, which allows access to the Playground the object + belongs to (useful for getting the pixel size in x and y of the playing field.
          + Recommended: when implementing this method, call at the end + ObjectController.applySpeedVector() method. This is a helper method that sets the new x,y coordinates + for the ObjectController.gameObject correctly.
          +
          +
          Overrides:
          +
          updateObject in class EnemyController
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/CollisionAwareEgoController.html b/spaceinvaders/GameProject/doc/controller/class-use/CollisionAwareEgoController.html new file mode 100644 index 0000000..4f4507a --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/CollisionAwareEgoController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.CollisionAwareEgoController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.CollisionAwareEgoController

      +
      +No usage of controller.CollisionAwareEgoController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/EgoController.html b/spaceinvaders/GameProject/doc/controller/class-use/EgoController.html new file mode 100644 index 0000000..58ee135 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/EgoController.html @@ -0,0 +1,88 @@ + + + + +Uses of Class controller.EgoController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.EgoController

      +
      +
      Packages that use EgoController
      +
      +
      Package
      +
      Description
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/EnemyController.html b/spaceinvaders/GameProject/doc/controller/class-use/EnemyController.html new file mode 100644 index 0000000..2b46d56 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/EnemyController.html @@ -0,0 +1,86 @@ + + + + +Uses of Class controller.EnemyController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.EnemyController

      +
      +
      Packages that use EnemyController
      +
      +
      Package
      +
      Description
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/FallingStarController.html b/spaceinvaders/GameProject/doc/controller/class-use/FallingStarController.html new file mode 100644 index 0000000..46efbd0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/FallingStarController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.FallingStarController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.FallingStarController

      +
      +No usage of controller.FallingStarController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/LimitedTimeController.html b/spaceinvaders/GameProject/doc/controller/class-use/LimitedTimeController.html new file mode 100644 index 0000000..7389bd0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/LimitedTimeController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.LimitedTimeController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.LimitedTimeController

      +
      +No usage of controller.LimitedTimeController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/MineController.html b/spaceinvaders/GameProject/doc/controller/class-use/MineController.html new file mode 100644 index 0000000..6f0e0f5 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/MineController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.MineController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.MineController

      +
      +No usage of controller.MineController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/ObjectController.html b/spaceinvaders/GameProject/doc/controller/class-use/ObjectController.html new file mode 100644 index 0000000..16f47e5 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/ObjectController.html @@ -0,0 +1,189 @@ + + + + +Uses of Class controller.ObjectController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.ObjectController

      +
      +
      Packages that use ObjectController
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/SimpleShotController.html b/spaceinvaders/GameProject/doc/controller/class-use/SimpleShotController.html new file mode 100644 index 0000000..7825b3b --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/SimpleShotController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.SimpleShotController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.SimpleShotController

      +
      +No usage of controller.SimpleShotController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/class-use/ZickZackController.html b/spaceinvaders/GameProject/doc/controller/class-use/ZickZackController.html new file mode 100644 index 0000000..185878c --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/class-use/ZickZackController.html @@ -0,0 +1,58 @@ + + + + +Uses of Class controller.ZickZackController + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      controller.ZickZackController

      +
      +No usage of controller.ZickZackController
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/package-summary.html b/spaceinvaders/GameProject/doc/controller/package-summary.html new file mode 100644 index 0000000..6645b2d --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/package-summary.html @@ -0,0 +1,124 @@ + + + + +controller + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package controller

      +
      +
      +
      package controller
      +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties. Object controllers react to user actions/inputs + and govern for example the movement of GameObject instances. They can access + their parent objects' properties and, by indirection, the properties and methods of the + associated level.
      + Controllers should be designed in such a way that they implement behavior that is + level-independent. All level-dependent behavior should be implemented in + Playground.applyGameLogic().
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/package-tree.html b/spaceinvaders/GameProject/doc/controller/package-tree.html new file mode 100644 index 0000000..6eca1a9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/package-tree.html @@ -0,0 +1,89 @@ + + + + +controller Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package controller

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/controller/package-use.html b/spaceinvaders/GameProject/doc/controller/package-use.html new file mode 100644 index 0000000..14d354b --- /dev/null +++ b/spaceinvaders/GameProject/doc/controller/package-use.html @@ -0,0 +1,127 @@ + + + + +Uses of Package controller + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      controller

      +
      +
      Packages that use controller
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      +
      +
      +
        +
      • +
        +
        Classes in controller used by collider
        +
        +
        Class
        +
        Description
        + +
        +
        Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in controller used by controller
        +
        +
        Class
        +
        Description
        + +
        +
        Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
        +
        + +
        +
        This class controls the space invaders.
        +
        + +
        +
        Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in controller used by gameobjects
        +
        +
        Class
        +
        Description
        + +
        +
        Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/element-list b/spaceinvaders/GameProject/doc/element-list new file mode 100644 index 0000000..05a42d6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/element-list @@ -0,0 +1,7 @@ +base +collider +controller +gameobjects +playground +rendering +ui diff --git a/spaceinvaders/GameProject/doc/gameobjects/AnimatedGameobject.html b/spaceinvaders/GameProject/doc/gameobjects/AnimatedGameobject.html new file mode 100644 index 0000000..2202771 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/AnimatedGameobject.html @@ -0,0 +1,202 @@ + + + + +AnimatedGameobject + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class AnimatedGameobject

      +
      +
      java.lang.Object +
      gameobjects.GameObject +
      gameobjects.AnimatedGameobject
      +
      +
      +
      +
      +
      public class AnimatedGameobject +extends GameObject
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          AnimatedGameobject

          +
          public AnimatedGameobject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double scale, + Animation anim, + double t0, + String abspielmodus)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          generateColliders

          +
          public GameObject generateColliders()
          +
          Description copied from class: GameObject
          +
          generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
          +
          +
          Overrides:
          +
          generateColliders in class GameObject
          +
          Returns:
          +
          instance of this GameObject (this).
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/EgoObject.html b/spaceinvaders/GameProject/doc/gameobjects/EgoObject.html new file mode 100644 index 0000000..0ac6e74 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/EgoObject.html @@ -0,0 +1,196 @@ + + + + +EgoObject + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class EgoObject

      +
      +
      java.lang.Object +
      gameobjects.GameObject +
      gameobjects.EgoObject
      +
      +
      +
      +
      +
      public class EgoObject +extends GameObject
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          EgoObject

          +
          public EgoObject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double egoRad)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          generateColliders

          +
          public GameObject generateColliders()
          +
          Description copied from class: GameObject
          +
          generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
          +
          +
          Overrides:
          +
          generateColliders in class GameObject
          +
          Returns:
          +
          instance of this GameObject (this).
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/FallingStar.html b/spaceinvaders/GameProject/doc/gameobjects/FallingStar.html new file mode 100644 index 0000000..71533cf --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/FallingStar.html @@ -0,0 +1,156 @@ + + + + +FallingStar + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class FallingStar

      +
      +
      java.lang.Object +
      gameobjects.GameObject +
      gameobjects.FallingStar
      +
      +
      +
      +
      +
      public class FallingStar +extends GameObject
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          FallingStar

          +
          public FallingStar(String id, + Playground playground, + double x, + double y, + double vx, + double vy, + Color color, + double rad)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/GameObject.html b/spaceinvaders/GameProject/doc/gameobjects/GameObject.html new file mode 100644 index 0000000..9fb46de --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/GameObject.html @@ -0,0 +1,740 @@ + + + + +GameObject + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class GameObject

      +
      +
      java.lang.Object +
      gameobjects.GameObject
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      AnimatedGameobject, EgoObject, FallingStar, RectObject, TextObject
      +
      +
      +
      public abstract class GameObject +extends Object
      +
      The class GameObject represents a (possibly animated) object appearing in a level of the + game. It is therefore attached to an instance of the class Playground. A GameObject has + at least the following properties: +
        +
      • 2D screen position +
      • 2D speed +
      • a name that is unique within a certain Playground
        +
      • a reference to the Playground object it belongs to
        +
      • a reference to an instance of ObjectController that handles the movement + logic of the object
        +
      • a (circular) radius for simple collision checking. This may be handled differently in + subclasses
        +
      + The main task of GameObject, or its subclasses, is to draw the object on the screen, which is + handles by the draw(Graphics2D) method. It is this method that must be redefined if a + new appearance should be realized. For introducing new behavior, it is sufficient to supply a + different ObjectController instance when constructing a GameObject.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        + +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          GameObject

          +
          public GameObject(String id, + Playground playground, + double x, + double y, + double vx, + double vy)
          +
          Constructor to initialize a GameObject, respectively set the current Playground + instance this GameObject belongs to.
          +
          +
          Parameters:
          +
          id - unique ID for this GameObject (should not be null or empty String)
          +
          playground - the Playground the GameObject belongs to (should not be null)
          +
          x - initial screen position in direction horizontal (positive value including zero)
          +
          y - initial screen position in direction vertical (positive value including zero)
          +
          vx - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
          +
          vy - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
          +
          +
          +
        • +
        • +
          +

          GameObject

          +
          public GameObject(String id, + Playground playground, + ObjectController controller, + double x, + double y, + double vx, + double vy)
          +
          Constructor to initialize a GameObject, respectively set the current Playground instance this + GameObject belongs to.
          +
          +
          Parameters:
          +
          id - unique ID for this GameObject (should not be null or empty String)
          +
          playground - the Playground the GameObject belongs to (should not be null)
          +
          controller - controller instance to be used for this GameObject (can be null)
          +
          x - initial screen position in direction horizontal (positive value including zero)
          +
          y - initial screen position in direction vertical (positive value including zero)
          +
          vx - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
          +
          vy - initial speed (velocity) in direction horizontal (can be negative, zero, positive)
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          setColliders

          +
          public void setColliders(LinkedList<Collider> l)
          +
          sets colliders.
          +
          +
          Parameters:
          +
          l - LinkedList of Colliders.
          +
          +
          +
        • +
        • +
          +

          generateColliders

          +
          public GameObject generateColliders()
          +
          generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
          +
          +
          Returns:
          +
          instance of this GameObject (this).
          +
          +
          +
        • +
        • +
          +

          addController

          +
          public GameObject addController(ObjectController c)
          +
          Sets the controller to use for this GameObject's logical behavior.
          +
          +
          Parameters:
          +
          c - instance to be used.
          +
          Returns:
          +
          the current instance (this).
          +
          +
          +
        • +
        • +
          +

          addArtist

          +
          public GameObject addArtist(Artist a)
          +
          Sets the artist to be used for drawing the object onto visible canvas area.
          +
          +
          Parameters:
          +
          a - instance to be used for calling Artist.draw(Graphics2D).
          +
          Returns:
          +
          the current instance (this).
          +
          +
          +
        • +
        • +
          +

          addCollider

          +
          public void addCollider(Collider c)
          +
          saves the collider in the internal list of Colliders to be used for this GameObject.
          +
          +
          Parameters:
          +
          c - instance to be added to internal list
          +
          +
          +
        • +
        • +
          +

          getPlayground

          +
          public Playground getPlayground()
          +
          +
        • +
        • +
          +

          setPlayground

          +
          public void setPlayground(Playground playground)
          +
          +
        • +
        • +
          +

          setComponentProperty

          +
          public void setComponentProperty(String comp, + String property, + Object value)
          +
          calls via reflection a method of a component if this GameObjects instance and provides the + given value as String parameter.
          +
          +
          Parameters:
          +
          comp - class name of GameObject component. Currently only "controller" is supported, + otherwise nothing happens.
          +
          property - method name of the component to call.
          +
          value - argument to pass to the method as String parameter.
          +
          +
          +
        • +
        • +
          +

          setObjectFlag

          +
          public void setObjectFlag(String flag, + Object value)
          +
          +
        • +
        • +
          +

          getObjectFlag

          +
          public Object getObjectFlag(String flag)
          +
          +
        • +
        • +
          +

          getOrCreateObjectFlag

          +
          public Object getOrCreateObjectFlag(String flag, + Object createValue)
          +
          +
        • +
        • +
          +

          isActive

          +
          public boolean isActive()
          +
          +
        • +
        • +
          +

          setActive

          +
          public GameObject setActive(boolean flag)
          +
          +
        • +
        • +
          +

          getId

          +
          public String getId()
          +
          return the unique object ID.
          +
          +
          Returns:
          +
          unique object ID
          +
          +
          +
        • +
        • +
          +

          getX

          +
          public double getX()
          +
          gets the screen X position.
          +
          +
          Returns:
          +
          screen x position
          +
          +
          +
        • +
        • +
          +

          getY

          +
          public double getY()
          +
          gets the screen Y position.
          +
          +
          Returns:
          +
          screen Y position
          +
          +
          +
        • +
        • +
          +

          getVX

          +
          public double getVX()
          +
          gets the screen X speed in pixels per frame.
          +
          +
          Returns:
          +
          screen x speed
          +
          +
          +
        • +
        • +
          +

          getVY

          +
          public double getVY()
          +
          gets the screen Y speed in pixels per frame.
          +
          +
          Returns:
          +
          screen y speed
          +
          +
          +
        • +
        • +
          +

          setX

          +
          public void setX(double x)
          +
          set screen x position.
          +
          +
          Parameters:
          +
          x - new position
          +
          +
          +
        • +
        • +
          +

          setY

          +
          public void setY(double y)
          +
          set screen y position.
          +
          +
          Parameters:
          +
          y - new position
          +
          +
          +
        • +
        • +
          +

          setVX

          +
          public void setVX(double vx)
          +
          set screen x speed in pixel per frame
          +
          +
          Parameters:
          +
          vx - new x speed
          +
          +
          +
        • +
        • +
          +

          setVY

          +
          public void setVY(double vy)
          +
          set screen y speed in pixel per frame.
          +
          +
          Parameters:
          +
          vy - new y speed.
          +
          +
          +
        • +
        • +
          +

          setObjectController

          +
          public void setObjectController(ObjectController controller)
          +
          Sets a new object controller (replaces any former one).
          +
          +
          Parameters:
          +
          controller - An instance of ObjectController or one of its subclasses.
          +
          +
          +
        • +
        • +
          +

          getObjectController

          +
          public ObjectController getObjectController()
          +
          Access to object controller.
          +
          +
          Returns:
          +
          the controller for this object.
          +
          +
          +
        • +
        • +
          +

          getGameTime

          +
          public double getGameTime()
          +
          +
        • +
        • +
          +

          collisionDetection

          +
          public boolean collisionDetection(GameObject other)
          +
          Collision detection implemented by iteration through the own list of Collider + and calling their Collider.collidesWith(Collider) method to check collision + with the given parameter instance of other GameObject.
          +
          +
          Parameters:
          +
          other - instance of the other GameObject to check collision with
          +
          Returns:
          +
          true if collision is detected, false otherwise
          +
          +
          +
        • +
        • +
          +

          updateObject

          +
          public void updateObject()
          +
          triggers this GameObjects own controller (if set) to update the object.
          +
          +
          See Also:
          +
          +
            +
          • controller
          • +
          +
          +
          +
          +
        • +
        • +
          +

          draw

          +
          public void draw(Graphics2D g)
          +
          Draws the object in its current state. Is called by the game engine, should NOT be called + otherwise.
          +
          +
          Parameters:
          +
          g - object that has all the necessary drawing functionalities
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/RectObject.html b/spaceinvaders/GameProject/doc/gameobjects/RectObject.html new file mode 100644 index 0000000..f5632bb --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/RectObject.html @@ -0,0 +1,251 @@ + + + + +RectObject + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class RectObject

      +
      +
      java.lang.Object +
      gameobjects.GameObject +
      gameobjects.RectObject
      +
      +
      +
      +
      +
      public class RectObject +extends GameObject
      +
      A rectangle object.
      + If generateColliders() is called, it generates a RectCollider with id-prefix + "shotcollider_" and registers it for this RectObject.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          RectObject

          +
          public RectObject(String id, + Playground pg, + double x, + double y, + double vx, + double vy, + double width, + double height, + Color color)
          +
          Initializes the RectObject with a suitable RectArtist for drawing the RectObject.
          +
          +
          Parameters:
          +
          id - String unique name to be used.
          +
          pg - Playground instance this RectObject belongs to (the level it belongs to).
          +
          x - position in horizontal direction in pixels (zero or positive number).
          +
          y - position in vertical direction in pixels (zero or positive number).
          +
          vx - speed/velocity in horizontal direction in pixels (negative, zero or positive number).
          +
          vy - speed/velocity in vertical direction in pixels (negative, zero or positive number).
          +
          width - in pixels
          +
          height - in pixels
          +
          color - solid color for the whole object, used to initialize an instance of + RectArtist used for this RectObject.
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          generateColliders

          +
          public RectObject generateColliders()
          +
          generates a new RectCollider with id-prefix "shotcollider_" and registers it for 'this' + [@link RectObject}. The RectCollider uses the same dimensions (width and height) as this RectObject.
          +
          +
          Overrides:
          +
          generateColliders in class GameObject
          +
          Returns:
          +
          this RectObject itself
          +
          +
          +
        • +
        • +
          +

          getWidth

          +
          public double getWidth()
          +
          Getter for the width
          +
          +
          Returns:
          +
          double width value as set by constructor
          +
          +
          +
        • +
        • +
          +

          getHeight

          +
          public double getHeight()
          +
          Getter for the height
          +
          +
          Returns:
          +
          double height value as set by constructor
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/TextObject.html b/spaceinvaders/GameProject/doc/gameobjects/TextObject.html new file mode 100644 index 0000000..a8dc150 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/TextObject.html @@ -0,0 +1,237 @@ + + + + +TextObject + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package gameobjects
      +

      Class TextObject

      +
      +
      java.lang.Object +
      gameobjects.GameObject +
      gameobjects.TextObject
      +
      +
      +
      +
      +
      public class TextObject +extends GameObject
      +
      Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text. The controller is left undefined, the collider as + well. However, a single call to the overwritten method generateColliders() will in fact + generate a RectCollider of just the right size for the text.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          TextObject

          +
          public TextObject(String id, + Playground playground, + double x, + double y, + double vx, + double vy, + String text, + int size, + Color textColor)
          +
          Constructor.
          +
          +
          Parameters:
          +
          id - object name
          +
          playground - containing Playground instance
          +
          x - positionx
          +
          y - positiony
          +
          vx - speedx
          +
          vy - speedy
          +
          size - font size in Pixel
          +
          text - String to be displayed
          +
          textColor - text color, see java.awt.Color
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getText

          +
          public String getText()
          +
          +
        • +
        • +
          +

          setText

          +
          public void setText(String s)
          +
          +
        • +
        • +
          +

          generateColliders

          +
          public TextObject generateColliders()
          +
          Description copied from class: GameObject
          +
          generates and sets collider(s) for this GameObject. This implementation does nothing. Intended + to be overridden by subclasses.
          +
          +
          Overrides:
          +
          generateColliders in class GameObject
          +
          Returns:
          +
          instance of this GameObject (this).
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html new file mode 100644 index 0000000..b3ce545 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/AnimatedGameobject.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.AnimatedGameobject + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.AnimatedGameobject

      +
      +No usage of gameobjects.AnimatedGameobject
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/EgoObject.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/EgoObject.html new file mode 100644 index 0000000..1747f74 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/EgoObject.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.EgoObject + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.EgoObject

      +
      +No usage of gameobjects.EgoObject
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/FallingStar.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/FallingStar.html new file mode 100644 index 0000000..262f368 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/FallingStar.html @@ -0,0 +1,58 @@ + + + + +Uses of Class gameobjects.FallingStar + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.FallingStar

      +
      +No usage of gameobjects.FallingStar
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/GameObject.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/GameObject.html new file mode 100644 index 0000000..95eede6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/GameObject.html @@ -0,0 +1,323 @@ + + + + +Uses of Class gameobjects.GameObject + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.GameObject

      +
      +
      Packages that use GameObject
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/RectObject.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/RectObject.html new file mode 100644 index 0000000..92b52a6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/RectObject.html @@ -0,0 +1,86 @@ + + + + +Uses of Class gameobjects.RectObject + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.RectObject

      +
      +
      Packages that use RectObject
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/class-use/TextObject.html b/spaceinvaders/GameProject/doc/gameobjects/class-use/TextObject.html new file mode 100644 index 0000000..d1fe78f --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/class-use/TextObject.html @@ -0,0 +1,83 @@ + + + + +Uses of Class gameobjects.TextObject + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      gameobjects.TextObject

      +
      +
      Packages that use TextObject
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/package-summary.html b/spaceinvaders/GameProject/doc/gameobjects/package-summary.html new file mode 100644 index 0000000..d518521 --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/package-summary.html @@ -0,0 +1,101 @@ + + + + +gameobjects + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package gameobjects

      +
      +
      +
      package gameobjects
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/package-tree.html b/spaceinvaders/GameProject/doc/gameobjects/package-tree.html new file mode 100644 index 0000000..4d85eea --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/package-tree.html @@ -0,0 +1,80 @@ + + + + +gameobjects Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package gameobjects

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/gameobjects/package-use.html b/spaceinvaders/GameProject/doc/gameobjects/package-use.html new file mode 100644 index 0000000..9b1ab9a --- /dev/null +++ b/spaceinvaders/GameProject/doc/gameobjects/package-use.html @@ -0,0 +1,159 @@ + + + + +Uses of Package gameobjects + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      gameobjects

      +
      +
      Packages that use gameobjects
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/help-doc.html b/spaceinvaders/GameProject/doc/help-doc.html new file mode 100644 index 0000000..2dbc07a --- /dev/null +++ b/spaceinvaders/GameProject/doc/help-doc.html @@ -0,0 +1,187 @@ + + + + +API Help + + + + + + + + + + + + + + + +
      + +
      +
      +

      JavaDoc Help

      + +
      +
      +

      Navigation

      +Starting from the Overview page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The Index and Search box allow you to navigate to specific declarations and summary pages, including: All Packages, All Classes and Interfaces + +
      +
      +
      +

      Kinds of Pages

      +The following sections describe the different kinds of pages in this collection. +
      +

      Overview

      +

      The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

      +
      +
      +

      Package

      +

      Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:

      +
        +
      • Interfaces
      • +
      • Classes
      • +
      • Enums
      • +
      • Exceptions
      • +
      • Errors
      • +
      • Annotation Types
      • +
      +
      +
      +

      Class or Interface

      +

      Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.

      +
        +
      • Class Inheritance Diagram
      • +
      • Direct Subclasses
      • +
      • All Known Subinterfaces
      • +
      • All Known Implementing Classes
      • +
      • Class or Interface Declaration
      • +
      • Class or Interface Description
      • +
      +
      +
        +
      • Nested Class Summary
      • +
      • Enum Constant Summary
      • +
      • Field Summary
      • +
      • Property Summary
      • +
      • Constructor Summary
      • +
      • Method Summary
      • +
      • Required Element Summary
      • +
      • Optional Element Summary
      • +
      +
      +
        +
      • Enum Constant Details
      • +
      • Field Details
      • +
      • Property Details
      • +
      • Constructor Details
      • +
      • Method Details
      • +
      • Element Details
      • +
      +

      Note: Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.

      +

      The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

      +
      +
      +

      Other Files

      +

      Packages and modules may contain pages with additional information related to the declarations nearby.

      +
      +
      +

      Use

      +

      Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the USE link in the navigation bar.

      +
      +
      +

      Tree (Class Hierarchy)

      +

      There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

      +
        +
      • When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.
      • +
      • When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.
      • +
      +
      +
      +

      Constant Field Values

      +

      The Constant Field Values page lists the static final fields and their values.

      +
      +
      +

      All Packages

      +

      The All Packages page contains an alphabetic index of all packages contained in the documentation.

      +
      +
      +

      All Classes and Interfaces

      +

      The All Classes and Interfaces page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.

      +
      +
      +

      Index

      +

      The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as All Packages, All Classes and Interfaces.

      +
      +
      +
      +This help file applies to API documentation generated by the standard doclet.
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-1.html b/spaceinvaders/GameProject/doc/index-files/index-1.html new file mode 100644 index 0000000..765dc67 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-1.html @@ -0,0 +1,131 @@ + + + + +A-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      A

      +
      +
      ACTION_ABOUT - Static variable in class ui.GameUI
      +
       
      +
      ACTION_BUTTON - Static variable in class ui.GameUI
      +
       
      +
      ACTION_LOAD - Static variable in class ui.GameUI
      +
       
      +
      ACTION_NEW - Static variable in class ui.GameUI
      +
       
      +
      ACTION_PAUSE - Static variable in class ui.GameUI
      +
       
      +
      ACTION_QUIT - Static variable in class ui.GameUI
      +
       
      +
      ACTION_RESET - Static variable in class ui.GameUI
      +
       
      +
      ACTION_SAVE - Static variable in class ui.GameUI
      +
       
      +
      actionPerformed(ActionEvent) - Method in class ui.GameUI
      +
      +
      interface implementation of ActionListener to respond to GUI element actions.
      +
      +
      addArtist(Artist) - Method in class gameobjects.GameObject
      +
      +
      Sets the artist to be used for drawing the object onto visible canvas area.
      +
      +
      addCollider(Collider) - Method in class gameobjects.GameObject
      +
      +
      saves the collider in the internal list of Colliders to be used for this GameObject.
      +
      +
      addController(ObjectController) - Method in class gameobjects.GameObject
      +
      +
      Sets the controller to use for this GameObject's logical behavior.
      +
      +
      addObject(GameObject) - Method in class playground.Playground
      +
      +
      Adds a graphics object to a level.
      +
      +
      addObjectNow(GameObject) - Method in class playground.Playground
      +
      +
      Adds a graphics object to a level.
      +
      +
      AnimatedGameobject - Class in gameobjects
      +
       
      +
      AnimatedGameobject(String, Playground, double, double, double, double, double, Animation, double, String) - Constructor for class gameobjects.AnimatedGameobject
      +
       
      +
      Animation - Class in playground
      +
       
      +
      Animation(String) - Constructor for class playground.Animation
      +
       
      +
      AnimationArtist - Class in rendering
      +
       
      +
      AnimationArtist(GameObject, Animation, double, String, double) - Constructor for class rendering.AnimationArtist
      +
       
      +
      applyGameLogic() - Method in class playground.Playground
      +
      +
      Method meant to be filled with own code, handles the entore game logic (collision checks, timed + events, ...).
      +
      +
      applyGameLogic() - Method in class playground.SpaceInvadersLevel
      +
      +
      applies the logic of the level: For now, this is just about deleting shots that are leaving the + screen and calling methods 'actionIf..' in case objects collide.
      +
      +
      applySpeedVector() - Method in class controller.ObjectController
      +
      +
      Convenience method: simply moves the object forward one step from its present position, using + its present speed.
      +
      +
      Artist - Class in rendering
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-10.html b/spaceinvaders/GameProject/doc/index-files/index-10.html new file mode 100644 index 0000000..5c3e260 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-10.html @@ -0,0 +1,135 @@ + + + + +L-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      L

      +
      +
      Level1 - Class in playground
      +
      +
      extends SpaceInvadersLevel with a boring start message
      +
      +
      Level1() - Constructor for class playground.Level1
      +
       
      +
      Level2 - Class in playground
      +
      +
      extends extends SpaceInvadersLevel with a different startup message.
      +
      +
      Level2() - Constructor for class playground.Level2
      +
       
      +
      Level3 - Class in playground
      +
      +
      extends SpaceInvadersLevel with a ZigZack move of the enemies in + Level3.createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different Level3.getStartupMessage().
      +
      +
      Level3() - Constructor for class playground.Level3
      +
       
      +
      Level4 - Class in playground
      +
      +
      extends extends SpaceInvadersLevel + + Hit aliens twice to kill them + they say AUA when not destroyed +
      +
      +
      Level4() - Constructor for class playground.Level4
      +
       
      +
      Level5 - Class in playground
      +
       
      +
      Level5() - Constructor for class playground.Level5
      +
       
      +
      Level6 - Class in playground
      +
       
      +
      Level6() - Constructor for class playground.Level6
      +
       
      +
      Level7 - Class in playground
      +
       
      +
      Level7() - Constructor for class playground.Level7
      +
       
      +
      LevelBoss - Class in playground
      +
      +
      Class that realizes all the game logic of a very simple game level.
      +
      +
      LevelBoss() - Constructor for class playground.LevelBoss
      +
       
      +
      levelFinished() - Method in class playground.Playground
      +
       
      +
      levelFinished() - Method in class playground.SpaceInvadersLevel
      +
       
      +
      LevelHitTwice - Class in playground
      +
      +
      extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
      +
      +
      LevelHitTwice() - Constructor for class playground.LevelHitTwice
      +
      +
      constructor setting internal name to 'hitTwice'
      +
      +
      LevelWithBox - Class in playground
      +
       
      +
      LevelWithBox() - Constructor for class playground.LevelWithBox
      +
       
      +
      LimitedTimeController - Class in controller
      +
      +
      Controls and abject that is deleted after a lifetime specified in the constructor, and when it + leaves the display.
      +
      +
      LimitedTimeController(double, double) - Constructor for class controller.LimitedTimeController
      +
      +
      Constructor.
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-11.html b/spaceinvaders/GameProject/doc/index-files/index-11.html new file mode 100644 index 0000000..779dc24 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-11.html @@ -0,0 +1,92 @@ + + + + +M-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      M

      +
      +
      main(String[]) - Static method in class base.GameLoop
      +
      +
      main to start the whole application.
      +
      +
      main(String[]) - Static method in class base.MultiLevelGame
      +
       
      +
      MASK - Static variable in class gameobjects.GameObject
      +
       
      +
      MAX_HITS - Static variable in class playground.Level4
      +
      +
      constant defining the number of shots needed to destroy an enemy
      +
      +
      MAX_HITS - Static variable in class playground.LevelHitTwice
      +
      +
      constant defining the number of shots needed to destroy an enemy
      +
      +
      MineController - Class in controller
      +
       
      +
      MineController(double) - Constructor for class controller.MineController
      +
       
      +
      MultiLevelGame - Class in base
      +
       
      +
      MultiLevelGame() - Constructor for class base.MultiLevelGame
      +
       
      +
      music(File) - Static method in class playground.Music
      +
       
      +
      Music - Class in playground
      +
       
      +
      Music() - Constructor for class playground.Music
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-12.html b/spaceinvaders/GameProject/doc/index-files/index-12.html new file mode 100644 index 0000000..1e15825 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-12.html @@ -0,0 +1,85 @@ + + + + +O-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      O

      +
      +
      ObjectController - Class in controller
      +
      +
      Class that controls the LOGICAL behavior of an object independently of how it is displayed or + drawn.
      +
      +
      ObjectController() - Constructor for class controller.ObjectController
      +
       
      +
      onDown(KeyEvent, GameObject) - Method in class controller.EgoController
      +
       
      +
      onLeft(KeyEvent, GameObject) - Method in class controller.EgoController
      +
       
      +
      onRight(KeyEvent, GameObject) - Method in class controller.EgoController
      +
       
      +
      onSpace(KeyEvent, GameObject) - Method in class controller.CollisionAwareEgoController
      +
       
      +
      onSpace(KeyEvent, GameObject) - Method in class controller.EgoController
      +
      +
      behavior for shooting on key space
      +
      +
      onStop(KeyEvent, GameObject) - Method in class controller.EgoController
      +
       
      +
      onUp(KeyEvent, GameObject) - Method in class controller.EgoController
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-13.html b/spaceinvaders/GameProject/doc/index-files/index-13.html new file mode 100644 index 0000000..111139e --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-13.html @@ -0,0 +1,97 @@ + + + + +P-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      P

      +
      +
      playground - package playground
      +
       
      +
      Playground - Class in playground
      +
      +
      Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
      +
      +
      Playground() - Constructor for class playground.Playground
      +
       
      +
      preferredSizeX() - Method in class playground.Playground
      +
       
      +
      preferredSizeX() - Method in class playground.SpaceInvadersLevel
      +
      +
      calculates and returns the preferred size of the level (in pixel) for X-direction
      +
      +
      preferredSizeY() - Method in class playground.Playground
      +
       
      +
      preferredSizeY() - Method in class playground.SpaceInvadersLevel
      +
      +
      calculates and returns the preferred size of the level (in pixel) for Y-direction
      +
      +
      prepareLevel(String) - Method in class playground.Playground
      +
      +
      Sets up a single level.
      +
      +
      prepareLevel(String) - Method in class playground.SpaceInvadersLevel
      +
      +
      initially sets up the level.
      +
      +
      processKeyEvents(Stack<KeyEvent>) - Method in class playground.Playground
      +
      +
      Method meant to be filled with own code, processes Keyboard inputs.
      +
      +
      processMouseEvents(Stack<MouseEvent>) - Method in class playground.Playground
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-14.html b/spaceinvaders/GameProject/doc/index-files/index-14.html new file mode 100644 index 0000000..4c2e22b --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-14.html @@ -0,0 +1,121 @@ + + + + +R-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      R

      +
      +
      RADIUS - Static variable in class gameobjects.GameObject
      +
       
      +
      readHSFromFile() - Method in class playground.HighscoreManager
      +
       
      +
      RECTANGLE - Static variable in class gameobjects.GameObject
      +
       
      +
      RectArtist - Class in rendering
      +
       
      +
      RectArtist(GameObject, double, double, Color) - Constructor for class rendering.RectArtist
      +
       
      +
      RectCollider - Class in collider
      +
      +
      a Collider for Rectangles, usually used for RectObject instances.
      +
      +
      RectCollider(String, GameObject, double, double) - Constructor for class collider.RectCollider
      +
      +
      initializes this RectCollider.
      +
      +
      RectObject - Class in gameobjects
      +
      +
      A rectangle object.
      +
      +
      RectObject(String, Playground, double, double, double, double, double, double, Color) - Constructor for class gameobjects.RectObject
      +
      +
      Initializes the RectObject with a suitable RectArtist for drawing the RectObject.
      +
      +
      redraw(Graphics2D) - Method in class playground.Playground
      +
      +
      Internal, do not call directly.
      +
      +
      redrawLevel(Graphics2D) - Method in class playground.Playground
      +
      +
      To be redefined!!
      +
      +
      redrawLevel(Graphics2D) - Method in class playground.SpaceInvadersLevel
      +
      +
      (re)draws the level but NOT the objects, they draw themselves.
      +
      +
      rendering - package rendering
      +
       
      +
      repaint() - Method in class ui.GameUI
      +
       
      +
      reset() - Method in class playground.Playground
      +
      +
      Reinitializes the level.
      +
      +
      resetAction() - Static method in class ui.GameUI
      +
       
      +
      resetFlags(int) - Method in class playground.Playground
      +
      +
      mode can be: FLAGS_ALL (all), FLAGS_GLOBAL(global), FLAGs_LEVEL(level)
      +
      +
      restoreDynamicState() - Method in class controller.CollisionAwareEgoController
      +
       
      +
      runGame(String[]) - Method in class base.GameLoop
      +
      +
      loops over all GameLoop.levels and implements the game loop to update continuously the level + during play time
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-15.html b/spaceinvaders/GameProject/doc/index-files/index-15.html new file mode 100644 index 0000000..95fadc8 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-15.html @@ -0,0 +1,191 @@ + + + + +S-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      S

      +
      +
      save() - Static method in class playground.SaveGame
      +
       
      +
      saveDynamicState() - Method in class controller.CollisionAwareEgoController
      +
       
      +
      SaveGame - Class in playground
      +
       
      +
      SaveGame() - Constructor for class playground.SaveGame
      +
       
      +
      scol - Variable in class gameobjects.GameObject
      +
       
      +
      setActive(boolean) - Method in class gameobjects.GameObject
      +
       
      +
      setColliders(LinkedList<Collider>) - Method in class gameobjects.GameObject
      +
      +
      sets colliders.
      +
      +
      setComponentProperty(String, String, Object) - Method in class gameobjects.GameObject
      +
      +
      calls via reflection a method of a component if this GameObjects instance and provides the + given value as String parameter.
      +
      +
      setController(ObjectController) - Method in class collider.Collider
      +
      +
      setter for GameController
      +
      +
      setDummy(String) - Method in class controller.ObjectController
      +
       
      +
      setGameTime(double) - Method in class playground.Playground
      +
      +
      set the game time value (in seconds)
      +
      +
      setGlobalFlag(String, Object) - Static method in class playground.Playground
      +
      +
      Sets a level-wide permanent flag.
      +
      +
      setLevelFlag(String, Object) - Method in class playground.Playground
      +
       
      +
      setObject(GameObject) - Method in class collider.Collider
      +
      +
      setter for corresponding GameObject
      +
      +
      setObject(GameObject) - Method in class controller.ObjectController
      +
       
      +
      setObjectController(ObjectController) - Method in class gameobjects.GameObject
      +
      +
      Sets a new object controller (replaces any former one).
      +
      +
      setObjectFlag(String, Object) - Method in class gameobjects.GameObject
      +
       
      +
      setOffsets(double, double) - Method in class collider.Collider
      +
      +
      setter for offset values to be used relative to GameObject center. default is zero.
      +
      +
      setPainting() - Method in class ui.GameUI
      +
       
      +
      setPaused(boolean) - Method in class playground.Playground
      +
       
      +
      setPlayground(Playground) - Method in class collider.Collider
      +
      +
      setter for Playground instance this collider belongs to
      +
      +
      setPlayground(Playground) - Method in class controller.ObjectController
      +
       
      +
      setPlayground(Playground) - Method in class gameobjects.GameObject
      +
       
      +
      setPlayground(Playground) - Method in class ui.GameUI
      +
       
      +
      setText(String) - Method in class gameobjects.TextObject
      +
       
      +
      setText(String) - Method in class rendering.TextArtist
      +
       
      +
      setTextHeight(double) - Method in class rendering.TextArtist
      +
       
      +
      setTextWidth(double) - Method in class rendering.TextArtist
      +
       
      +
      setTimestep(double) - Method in class playground.Playground
      +
       
      +
      setVX(double) - Method in class controller.ObjectController
      +
       
      +
      setVX(double) - Method in class gameobjects.GameObject
      +
      +
      set screen x speed in pixel per frame
      +
      +
      setVY(double) - Method in class controller.ObjectController
      +
       
      +
      setVY(double) - Method in class gameobjects.GameObject
      +
      +
      set screen y speed in pixel per frame.
      +
      +
      setX(double) - Method in class controller.ObjectController
      +
       
      +
      setX(double) - Method in class gameobjects.GameObject
      +
      +
      set screen x position.
      +
      +
      setY(double) - Method in class controller.ObjectController
      +
       
      +
      setY(double) - Method in class gameobjects.GameObject
      +
      +
      set screen y position.
      +
      +
      SHOTSPEED - Static variable in class playground.SpaceInvadersLevel
      +
       
      +
      showtimeList - Variable in class playground.Animation
      +
       
      +
      SimpleShotController - Class in controller
      +
       
      +
      SimpleShotController() - Constructor for class controller.SimpleShotController
      +
       
      +
      SIZEX - Static variable in class base.GameLoop
      +
      +
      Pixel width of Game GUI ( above 0)
      +
      +
      SIZEY - Static variable in class base.GameLoop
      +
      +
      Pixel height of Game GUI (above 0)
      +
      +
      SpaceInvadersLevel - Class in playground
      +
      +
      Class that realizes all the game logic of a very simple game level.
      +
      +
      SpaceInvadersLevel() - Constructor for class playground.SpaceInvadersLevel
      +
       
      +
      stopObject() - Method in class controller.CollisionAwareEgoController
      +
       
      +
      stopObject() - Method in class controller.EgoController
      +
      +
      checks the position and respects level boundaries and own radius or width/height set on constructor.
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-16.html b/spaceinvaders/GameProject/doc/index-files/index-16.html new file mode 100644 index 0000000..afc54f5 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-16.html @@ -0,0 +1,89 @@ + + + + +T-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      T

      +
      +
      TextArtist - Class in rendering
      +
      +
      Rendering an object as a text of a specified color, size and font.
      +
      +
      TextArtist(GameObject, String, int, Color) - Constructor for class rendering.TextArtist
      +
      +
      Constructor to intitialize the TextArtist attributes
      +
      +
      TextObject - Class in gameobjects
      +
      +
      Convenience Class subclassing GameObject, directly instanciating TextArtist a + subclass of Artist that draws a text.
      +
      +
      TextObject(String, Playground, double, double, double, double, String, int, Color) - Constructor for class gameobjects.TextObject
      +
      +
      Constructor.
      +
      +
      togglePause() - Method in class playground.Playground
      +
       
      +
      toString() - Method in class collider.CircleCollider
      +
      +
      simple concatenation of all attributes (x,y,r)
      +
      +
      toString() - Method in class collider.Collider
      +
       
      +
      toString() - Method in class collider.RectCollider
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-17.html b/spaceinvaders/GameProject/doc/index-files/index-17.html new file mode 100644 index 0000000..76d75ab --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-17.html @@ -0,0 +1,92 @@ + + + + +U-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      U

      +
      +
      ui - package ui
      +
       
      +
      updateObject() - Method in class controller.EgoController
      +
      +
      updates position based on key events (mouse currently ignored)
      +
      +
      updateObject() - Method in class controller.EnemyController
      +
       
      +
      updateObject() - Method in class controller.FallingStarController
      +
       
      +
      updateObject() - Method in class controller.LimitedTimeController
      +
       
      +
      updateObject() - Method in class controller.MineController
      +
       
      +
      updateObject() - Method in class controller.ObjectController
      +
      +
      Is called once every game time step by the game itself.
      +
      +
      updateObject() - Method in class controller.SimpleShotController
      +
       
      +
      updateObject() - Method in class controller.ZickZackController
      +
       
      +
      updateObject() - Method in class gameobjects.GameObject
      +
      +
      triggers this GameObjects own controller (if set) to update the object.
      +
      +
      updateObjects() - Method in class playground.Playground
      +
      +
      Calls all object update methods in level.
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-18.html b/spaceinvaders/GameProject/doc/index-files/index-18.html new file mode 100644 index 0000000..be9e8a0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-18.html @@ -0,0 +1,66 @@ + + + + +W-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      W

      +
      +
      waitWhilePainting() - Method in class ui.GameUI
      +
       
      +
      writeHSToFile(Integer, Integer) - Static method in class playground.HighscoreManager
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-19.html b/spaceinvaders/GameProject/doc/index-files/index-19.html new file mode 100644 index 0000000..9fc20f8 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-19.html @@ -0,0 +1,66 @@ + + + + +Z-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      Z

      +
      +
      ZickZackController - Class in controller
      +
       
      +
      ZickZackController(double, double) - Constructor for class controller.ZickZackController
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-2.html b/spaceinvaders/GameProject/doc/index-files/index-2.html new file mode 100644 index 0000000..f09c280 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-2.html @@ -0,0 +1,64 @@ + + + + +B-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      B

      +
      +
      base - package base
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-3.html b/spaceinvaders/GameProject/doc/index-files/index-3.html new file mode 100644 index 0000000..c9591fa --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-3.html @@ -0,0 +1,129 @@ + + + + +C-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      C

      +
      +
      checkCollisionCircCirc(Collider) - Method in class collider.CircleCollider
      +
      +
      calculates the collission of this with other collider
      +
      +
      checkCollisionRectCirc(Collider) - Method in class collider.RectCollider
      +
      +
      checks collision with other Collider, which needs to be a CircleCollider
      +
      +
      checkCollisionRectRect(Collider) - Method in class collider.RectCollider
      +
      +
      checks collision with other Collider, which needs to be a RectCollider, too.
      +
      +
      CircleArtist - Class in rendering
      +
       
      +
      CircleArtist(GameObject) - Constructor for class rendering.CircleArtist
      +
       
      +
      CircleArtist(GameObject, double, Color) - Constructor for class rendering.CircleArtist
      +
       
      +
      CircleCollider - Class in collider
      +
      +
      Collider for round objects
      +
      +
      CircleCollider(String, GameObject, double) - Constructor for class collider.CircleCollider
      +
      +
      Constructor which sets the radius to be respected for collisions.
      +
      +
      closeFile() - Method in class playground.HighscoreManager
      +
       
      +
      collectObjects(String, boolean) - Method in class playground.Playground
      +
      +
      Puts objects with a certain substring in their name into a LinkedLisrt and returns them.
      +
      +
      collider - package collider
      +
       
      +
      Collider - Class in collider
      +
      +
      abstract base class for all Colliders to detect collisions between GameObjects
      +
      +
      Collider(String, GameObject) - Constructor for class collider.Collider
      +
       
      +
      collidesWith(Collider) - Method in class collider.CircleCollider
      +
       
      +
      collidesWith(Collider) - Method in class collider.Collider
      +
      +
      checks the collission with another collider instance.
      +
      +
      collidesWith(Collider) - Method in class collider.RectCollider
      +
       
      +
      CollisionAwareEgoController - Class in controller
      +
      +
      An EgoController which cannot move through obstacle objects (is collission aware).
      +
      +
      CollisionAwareEgoController(double) - Constructor for class controller.CollisionAwareEgoController
      +
       
      +
      CollisionAwareEgoController(double, File) - Constructor for class controller.CollisionAwareEgoController
      +
       
      +
      collisionDetection(GameObject) - Method in class gameobjects.GameObject
      +
      +
      Collision detection implemented by iteration through the own list of Collider + and calling their Collider.collidesWith(Collider) method to check collision + with the given parameter instance of other GameObject.
      +
      +
      controller - package controller
      +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-4.html b/spaceinvaders/GameProject/doc/index-files/index-4.html new file mode 100644 index 0000000..211204d --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-4.html @@ -0,0 +1,86 @@ + + + + +D-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      D

      +
      +
      deleteObject(String) - Method in class playground.Playground
      +
      +
      Removes a graphics object from a level.
      +
      +
      deleteObjectNow(String) - Method in class playground.Playground
      +
      +
      Removes a graphics object from a level immediately, CAUTION.
      +
      +
      draw(Graphics2D) - Method in class gameobjects.GameObject
      +
      +
      Draws the object in its current state.
      +
      +
      draw(Graphics2D) - Method in class rendering.AnimationArtist
      +
       
      +
      draw(Graphics2D) - Method in class rendering.Artist
      +
       
      +
      draw(Graphics2D) - Method in class rendering.CircleArtist
      +
       
      +
      draw(Graphics2D) - Method in class rendering.RectArtist
      +
       
      +
      draw(Graphics2D) - Method in class rendering.TextArtist
      +
      +
      Draw the text.
      +
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-5.html b/spaceinvaders/GameProject/doc/index-files/index-5.html new file mode 100644 index 0000000..687517f --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-5.html @@ -0,0 +1,87 @@ + + + + +E-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      E

      +
      +
      EgoController - Class in controller
      +
      +
      Controller using key events for up, down, left, right and space (shooting) to control the ego + object behavior.
      +
      +
      EgoController(double) - Constructor for class controller.EgoController
      +
      +
      constructor that gives the ego controller a radius to stop the ego object when it reaches the level boundaries.
      +
      +
      EgoController(double, double) - Constructor for class controller.EgoController
      +
      +
      constructor that gives the ego controller a width and height to stop the ego object when it reaches the level boundaries.
      +
      +
      EgoObject - Class in gameobjects
      +
       
      +
      EgoObject(String, Playground, double, double, double, double, double) - Constructor for class gameobjects.EgoObject
      +
       
      +
      EGOSPEED - Static variable in class playground.SpaceInvadersLevel
      +
       
      +
      EnemyController - Class in controller
      +
      +
      This class controls the space invaders.
      +
      +
      EnemyController() - Constructor for class controller.EnemyController
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-6.html b/spaceinvaders/GameProject/doc/index-files/index-6.html new file mode 100644 index 0000000..2d4833b --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-6.html @@ -0,0 +1,80 @@ + + + + +F-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      F

      +
      +
      FallingStar - Class in gameobjects
      +
       
      +
      FallingStar(String, Playground, double, double, double, double, Color, double) - Constructor for class gameobjects.FallingStar
      +
       
      +
      FallingStarController - Class in controller
      +
      +
      Controls background stars.
      +
      +
      FallingStarController() - Constructor for class controller.FallingStarController
      +
       
      +
      fileList - Variable in class playground.Animation
      +
       
      +
      FLAGS_ALL - Static variable in class playground.Playground
      +
       
      +
      FLAGS_GLOBAL - Static variable in class playground.Playground
      +
       
      +
      FLAGS_LEVEL - Static variable in class playground.Playground
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-7.html b/spaceinvaders/GameProject/doc/index-files/index-7.html new file mode 100644 index 0000000..2d99e63 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-7.html @@ -0,0 +1,250 @@ + + + + +G-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      G

      +
      +
      GameLoop - Class in base
      +
      +
      Main class starting any game, contains main().
      +
      +
      GameLoop() - Constructor for class base.GameLoop
      +
      +
      constructor which calls GameLoop.defineLevels(), which adds all levels of this game.
      +
      +
      GameObject - Class in gameobjects
      +
      +
      The class GameObject represents a (possibly animated) object appearing in a level of the + game.
      +
      +
      GameObject(String, Playground, double, double, double, double) - Constructor for class gameobjects.GameObject
      +
      +
      Constructor to initialize a GameObject, respectively set the current Playground + instance this GameObject belongs to.
      +
      +
      GameObject(String, Playground, ObjectController, double, double, double, double) - Constructor for class gameobjects.GameObject
      +
      +
      Constructor to initialize a GameObject, respectively set the current Playground instance this + GameObject belongs to.
      +
      +
      gameobjects - package gameobjects
      +
       
      +
      gameOver() - Method in class playground.Playground
      +
       
      +
      gameOver() - Method in class playground.SpaceInvadersLevel
      +
       
      +
      GameUI - Class in ui
      +
      +
      creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
      +
      +
      GameUI(int, int) - Constructor for class ui.GameUI
      +
      +
      as typical for GUI classes this constructor creates all the components and adds them to the + frame.
      +
      +
      generateColliders() - Method in class gameobjects.AnimatedGameobject
      +
       
      +
      generateColliders() - Method in class gameobjects.EgoObject
      +
       
      +
      generateColliders() - Method in class gameobjects.GameObject
      +
      +
      generates and sets collider(s) for this GameObject.
      +
      +
      generateColliders() - Method in class gameobjects.RectObject
      +
      +
      generates a new RectCollider with id-prefix "shotcollider_" and registers it for 'this' + [@link RectObject}.
      +
      +
      generateColliders() - Method in class gameobjects.TextObject
      +
       
      +
      getCurrentKey() - Method in class ui.GameUI
      +
       
      +
      getFileList() - Method in class playground.Animation
      +
       
      +
      getGameTime() - Method in class gameobjects.GameObject
      +
       
      +
      getGameTime() - Method in class playground.Playground
      +
      +
      returns time in seconds since level start
      +
      +
      getGameTime() - Method in class rendering.Artist
      +
       
      +
      getGlobalFlag(String) - Static method in class playground.Playground
      +
      +
      Retrieves a level-wide flag by name.
      +
      +
      getH() - Method in class rendering.AnimationArtist
      +
       
      +
      getHeight() - Method in class gameobjects.RectObject
      +
      +
      Getter for the height
      +
      +
      getId() - Method in class collider.Collider
      +
      +
      returns the internal unique name
      +
      +
      getId() - Method in class gameobjects.GameObject
      +
      +
      return the unique object ID.
      +
      +
      getImageList() - Method in class playground.Animation
      +
       
      +
      getKeyEvents() - Method in class playground.Playground
      +
       
      +
      getKeyEvents() - Method in class ui.GameUI
      +
       
      +
      getLevelFlag(String) - Method in class playground.Playground
      +
       
      +
      getMouseEvents() - Method in class playground.Playground
      +
       
      +
      getMouseEvents() - Method in class ui.GameUI
      +
       
      +
      getNewAction() - Static method in class ui.GameUI
      +
       
      +
      getObject(String) - Method in class playground.Playground
      +
      +
      Retrieves a graphics object by name.
      +
      +
      getObjectController() - Method in class gameobjects.GameObject
      +
      +
      Access to object controller.
      +
      +
      getObjectFlag(String) - Method in class gameobjects.GameObject
      +
       
      +
      getOrCreateGlobalFlag(String, Object) - Static method in class playground.Playground
      +
      +
      checks for existence and if not creates the new global flag with the given initial value.
      +
      +
      getOrCreateLevelFlag(String, Object) - Method in class playground.Playground
      +
       
      +
      getOrCreateObjectFlag(String, Object) - Method in class gameobjects.GameObject
      +
       
      +
      getPlayground() - Method in class controller.ObjectController
      +
       
      +
      getPlayground() - Method in class gameobjects.GameObject
      +
       
      +
      getShowtimeList() - Method in class playground.Animation
      +
       
      +
      getSizeX() - Method in class playground.Playground
      +
       
      +
      getSizeY() - Method in class playground.Playground
      +
       
      +
      getText() - Method in class gameobjects.TextObject
      +
       
      +
      getText() - Method in class rendering.TextArtist
      +
       
      +
      getTextHeight() - Method in class rendering.TextArtist
      +
       
      +
      getTextWidth() - Method in class rendering.TextArtist
      +
       
      +
      getTimestep() - Method in class controller.ObjectController
      +
       
      +
      getTimestep() - Method in class playground.Playground
      +
       
      +
      getVX() - Method in class controller.ObjectController
      +
       
      +
      getVX() - Method in class gameobjects.GameObject
      +
      +
      gets the screen X speed in pixels per frame.
      +
      +
      getVX() - Method in class rendering.Artist
      +
       
      +
      getVY() - Method in class controller.ObjectController
      +
       
      +
      getVY() - Method in class gameobjects.GameObject
      +
      +
      gets the screen Y speed in pixels per frame.
      +
      +
      getVY() - Method in class rendering.Artist
      +
       
      +
      getW() - Method in class rendering.AnimationArtist
      +
       
      +
      getWidth() - Method in class gameobjects.RectObject
      +
      +
      Getter for the width
      +
      +
      getX() - Method in class collider.Collider
      +
      +
      returns the corresponding game objects X coordinate (center) plus this colliders offset in X + (probably zero).
      +
      +
      getX() - Method in class controller.ObjectController
      +
       
      +
      getX() - Method in class gameobjects.GameObject
      +
      +
      gets the screen X position.
      +
      +
      getX() - Method in class rendering.Artist
      +
       
      +
      getY() - Method in class collider.Collider
      +
      +
      returns the corresponding game objects Y coordinate (center) plus this colliders offset in Y + (probably zero).
      +
      +
      getY() - Method in class controller.ObjectController
      +
       
      +
      getY() - Method in class gameobjects.GameObject
      +
      +
      gets the screen Y position.
      +
      +
      getY() - Method in class rendering.Artist
      +
       
      +
      grabFocus() - Method in class ui.GameUI
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-8.html b/spaceinvaders/GameProject/doc/index-files/index-8.html new file mode 100644 index 0000000..1986984 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-8.html @@ -0,0 +1,66 @@ + + + + +H-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      H

      +
      +
      HighscoreManager - Class in playground
      +
       
      +
      HighscoreManager() - Constructor for class playground.HighscoreManager
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index-files/index-9.html b/spaceinvaders/GameProject/doc/index-files/index-9.html new file mode 100644 index 0000000..9ee88e2 --- /dev/null +++ b/spaceinvaders/GameProject/doc/index-files/index-9.html @@ -0,0 +1,76 @@ + + + + +I-Index + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Index

      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values +

      I

      +
      +
      id - Variable in class collider.Collider
      +
      +
      unique internal name for Collider
      +
      +
      id - Variable in class gameobjects.GameObject
      +
       
      +
      imageList - Variable in class playground.Animation
      +
       
      +
      isActive() - Method in class gameobjects.GameObject
      +
       
      +
      isPainting() - Method in class ui.GameUI
      +
       
      +
      isPaused() - Method in class playground.Playground
      +
       
      +
      +A B C D E F G H I L M O P R S T U W Z 
      All Classes and Interfaces|All Packages|Constant Field Values
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/index.html b/spaceinvaders/GameProject/doc/index.html new file mode 100644 index 0000000..1a4ef0c --- /dev/null +++ b/spaceinvaders/GameProject/doc/index.html @@ -0,0 +1,79 @@ + + + + +Overview + + + + + + + + + + + + + + + +
      + +
      +
      +
      +
      Packages
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      + +
       
      +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/jquery-ui.overrides.css b/spaceinvaders/GameProject/doc/jquery-ui.overrides.css new file mode 100644 index 0000000..1abff95 --- /dev/null +++ b/spaceinvaders/GameProject/doc/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/spaceinvaders/GameProject/doc/legal/COPYRIGHT b/spaceinvaders/GameProject/doc/legal/COPYRIGHT new file mode 100644 index 0000000..ca74fff --- /dev/null +++ b/spaceinvaders/GameProject/doc/legal/COPYRIGHT @@ -0,0 +1 @@ +Please see ..\java.base\COPYRIGHT diff --git a/spaceinvaders/GameProject/doc/legal/LICENSE b/spaceinvaders/GameProject/doc/legal/LICENSE new file mode 100644 index 0000000..4ad9fe4 --- /dev/null +++ b/spaceinvaders/GameProject/doc/legal/LICENSE @@ -0,0 +1 @@ +Please see ..\java.base\LICENSE diff --git a/spaceinvaders/GameProject/doc/legal/jquery.md b/spaceinvaders/GameProject/doc/legal/jquery.md new file mode 100644 index 0000000..8054a34 --- /dev/null +++ b/spaceinvaders/GameProject/doc/legal/jquery.md @@ -0,0 +1,72 @@ +## jQuery v3.5.1 + +### jQuery License +``` +jQuery v 3.5.1 +Copyright JS Foundation and other contributors, https://js.foundation/ + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +****************************************** + +The jQuery JavaScript Library v3.5.1 also includes Sizzle.js + +Sizzle.js includes the following license: + +Copyright JS Foundation and other contributors, https://js.foundation/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/sizzle + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +********************* + +``` diff --git a/spaceinvaders/GameProject/doc/legal/jqueryUI.md b/spaceinvaders/GameProject/doc/legal/jqueryUI.md new file mode 100644 index 0000000..8031bdb --- /dev/null +++ b/spaceinvaders/GameProject/doc/legal/jqueryUI.md @@ -0,0 +1,49 @@ +## jQuery UI v1.12.1 + +### jQuery UI License +``` +Copyright jQuery Foundation and other contributors, https://jquery.org/ + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/jquery/jquery-ui + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code contained within the demos directory. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +All files located in the node_modules and external directories are +externally maintained libraries used by this software which have their +own licenses; we recommend you read them, as their terms may differ from +the terms above. + +``` diff --git a/spaceinvaders/GameProject/doc/member-search-index.js b/spaceinvaders/GameProject/doc/member-search-index.js new file mode 100644 index 0000000..e6bdaf0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"ui","c":"GameUI","l":"ACTION_ABOUT"},{"p":"ui","c":"GameUI","l":"ACTION_BUTTON"},{"p":"ui","c":"GameUI","l":"ACTION_LOAD"},{"p":"ui","c":"GameUI","l":"ACTION_NEW"},{"p":"ui","c":"GameUI","l":"ACTION_PAUSE"},{"p":"ui","c":"GameUI","l":"ACTION_QUIT"},{"p":"ui","c":"GameUI","l":"ACTION_RESET"},{"p":"ui","c":"GameUI","l":"ACTION_SAVE"},{"p":"ui","c":"GameUI","l":"actionPerformed(ActionEvent)","u":"actionPerformed(java.awt.event.ActionEvent)"},{"p":"gameobjects","c":"GameObject","l":"addArtist(Artist)","u":"addArtist(rendering.Artist)"},{"p":"gameobjects","c":"GameObject","l":"addCollider(Collider)","u":"addCollider(collider.Collider)"},{"p":"gameobjects","c":"GameObject","l":"addController(ObjectController)","u":"addController(controller.ObjectController)"},{"p":"playground","c":"Playground","l":"addObject(GameObject)","u":"addObject(gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"addObjectNow(GameObject)","u":"addObjectNow(gameobjects.GameObject)"},{"p":"gameobjects","c":"AnimatedGameobject","l":"AnimatedGameobject(String, Playground, double, double, double, double, double, Animation, double, String)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double,playground.Animation,double,java.lang.String)"},{"p":"playground","c":"Animation","l":"Animation(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"rendering","c":"AnimationArtist","l":"AnimationArtist(GameObject, Animation, double, String, double)","u":"%3Cinit%3E(gameobjects.GameObject,playground.Animation,double,java.lang.String,double)"},{"p":"playground","c":"Playground","l":"applyGameLogic()"},{"p":"playground","c":"SpaceInvadersLevel","l":"applyGameLogic()"},{"p":"controller","c":"ObjectController","l":"applySpeedVector()"},{"p":"collider","c":"CircleCollider","l":"checkCollisionCircCirc(Collider)","u":"checkCollisionCircCirc(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"checkCollisionRectCirc(Collider)","u":"checkCollisionRectCirc(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"checkCollisionRectRect(Collider)","u":"checkCollisionRectRect(collider.Collider)"},{"p":"rendering","c":"CircleArtist","l":"CircleArtist(GameObject)","u":"%3Cinit%3E(gameobjects.GameObject)"},{"p":"rendering","c":"CircleArtist","l":"CircleArtist(GameObject, double, Color)","u":"%3Cinit%3E(gameobjects.GameObject,double,java.awt.Color)"},{"p":"collider","c":"CircleCollider","l":"CircleCollider(String, GameObject, double)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject,double)"},{"p":"playground","c":"HighscoreManager","l":"closeFile()"},{"p":"playground","c":"Playground","l":"collectObjects(String, boolean)","u":"collectObjects(java.lang.String,boolean)"},{"p":"collider","c":"Collider","l":"Collider(String, GameObject)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject)"},{"p":"collider","c":"CircleCollider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"collider","c":"Collider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"collider","c":"RectCollider","l":"collidesWith(Collider)","u":"collidesWith(collider.Collider)"},{"p":"controller","c":"CollisionAwareEgoController","l":"CollisionAwareEgoController(double)","u":"%3Cinit%3E(double)"},{"p":"controller","c":"CollisionAwareEgoController","l":"CollisionAwareEgoController(double, File)","u":"%3Cinit%3E(double,java.io.File)"},{"p":"gameobjects","c":"GameObject","l":"collisionDetection(GameObject)","u":"collisionDetection(gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"deleteObject(String)","u":"deleteObject(java.lang.String)"},{"p":"playground","c":"Playground","l":"deleteObjectNow(String)","u":"deleteObjectNow(java.lang.String)"},{"p":"gameobjects","c":"GameObject","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"AnimationArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"Artist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"CircleArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"RectArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"rendering","c":"TextArtist","l":"draw(Graphics2D)","u":"draw(java.awt.Graphics2D)"},{"p":"controller","c":"EgoController","l":"EgoController(double)","u":"%3Cinit%3E(double)"},{"p":"controller","c":"EgoController","l":"EgoController(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"gameobjects","c":"EgoObject","l":"EgoObject(String, Playground, double, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double)"},{"p":"playground","c":"SpaceInvadersLevel","l":"EGOSPEED"},{"p":"controller","c":"EnemyController","l":"EnemyController()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"FallingStar","l":"FallingStar(String, Playground, double, double, double, double, Color, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,java.awt.Color,double)"},{"p":"controller","c":"FallingStarController","l":"FallingStarController()","u":"%3Cinit%3E()"},{"p":"playground","c":"Animation","l":"fileList"},{"p":"playground","c":"Playground","l":"FLAGS_ALL"},{"p":"playground","c":"Playground","l":"FLAGS_GLOBAL"},{"p":"playground","c":"Playground","l":"FLAGS_LEVEL"},{"p":"base","c":"GameLoop","l":"GameLoop()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"GameObject","l":"GameObject(String, Playground, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double)"},{"p":"gameobjects","c":"GameObject","l":"GameObject(String, Playground, ObjectController, double, double, double, double)","u":"%3Cinit%3E(java.lang.String,playground.Playground,controller.ObjectController,double,double,double,double)"},{"p":"playground","c":"Playground","l":"gameOver()"},{"p":"playground","c":"SpaceInvadersLevel","l":"gameOver()"},{"p":"ui","c":"GameUI","l":"GameUI(int, int)","u":"%3Cinit%3E(int,int)"},{"p":"gameobjects","c":"AnimatedGameobject","l":"generateColliders()"},{"p":"gameobjects","c":"EgoObject","l":"generateColliders()"},{"p":"gameobjects","c":"GameObject","l":"generateColliders()"},{"p":"gameobjects","c":"RectObject","l":"generateColliders()"},{"p":"gameobjects","c":"TextObject","l":"generateColliders()"},{"p":"ui","c":"GameUI","l":"getCurrentKey()"},{"p":"playground","c":"Animation","l":"getFileList()"},{"p":"gameobjects","c":"GameObject","l":"getGameTime()"},{"p":"playground","c":"Playground","l":"getGameTime()"},{"p":"rendering","c":"Artist","l":"getGameTime()"},{"p":"playground","c":"Playground","l":"getGlobalFlag(String)","u":"getGlobalFlag(java.lang.String)"},{"p":"rendering","c":"AnimationArtist","l":"getH()"},{"p":"gameobjects","c":"RectObject","l":"getHeight()"},{"p":"collider","c":"Collider","l":"getId()"},{"p":"gameobjects","c":"GameObject","l":"getId()"},{"p":"playground","c":"Animation","l":"getImageList()"},{"p":"playground","c":"Playground","l":"getKeyEvents()"},{"p":"ui","c":"GameUI","l":"getKeyEvents()"},{"p":"playground","c":"Playground","l":"getLevelFlag(String)","u":"getLevelFlag(java.lang.String)"},{"p":"playground","c":"Playground","l":"getMouseEvents()"},{"p":"ui","c":"GameUI","l":"getMouseEvents()"},{"p":"ui","c":"GameUI","l":"getNewAction()"},{"p":"playground","c":"Playground","l":"getObject(String)","u":"getObject(java.lang.String)"},{"p":"gameobjects","c":"GameObject","l":"getObjectController()"},{"p":"gameobjects","c":"GameObject","l":"getObjectFlag(String)","u":"getObjectFlag(java.lang.String)"},{"p":"playground","c":"Playground","l":"getOrCreateGlobalFlag(String, Object)","u":"getOrCreateGlobalFlag(java.lang.String,java.lang.Object)"},{"p":"playground","c":"Playground","l":"getOrCreateLevelFlag(String, Object)","u":"getOrCreateLevelFlag(java.lang.String,java.lang.Object)"},{"p":"gameobjects","c":"GameObject","l":"getOrCreateObjectFlag(String, Object)","u":"getOrCreateObjectFlag(java.lang.String,java.lang.Object)"},{"p":"controller","c":"ObjectController","l":"getPlayground()"},{"p":"gameobjects","c":"GameObject","l":"getPlayground()"},{"p":"playground","c":"Animation","l":"getShowtimeList()"},{"p":"playground","c":"Playground","l":"getSizeX()"},{"p":"playground","c":"Playground","l":"getSizeY()"},{"p":"gameobjects","c":"TextObject","l":"getText()"},{"p":"rendering","c":"TextArtist","l":"getText()"},{"p":"rendering","c":"TextArtist","l":"getTextHeight()"},{"p":"rendering","c":"TextArtist","l":"getTextWidth()"},{"p":"controller","c":"ObjectController","l":"getTimestep()"},{"p":"playground","c":"Playground","l":"getTimestep()"},{"p":"controller","c":"ObjectController","l":"getVX()"},{"p":"gameobjects","c":"GameObject","l":"getVX()"},{"p":"rendering","c":"Artist","l":"getVX()"},{"p":"controller","c":"ObjectController","l":"getVY()"},{"p":"gameobjects","c":"GameObject","l":"getVY()"},{"p":"rendering","c":"Artist","l":"getVY()"},{"p":"rendering","c":"AnimationArtist","l":"getW()"},{"p":"gameobjects","c":"RectObject","l":"getWidth()"},{"p":"collider","c":"Collider","l":"getX()"},{"p":"controller","c":"ObjectController","l":"getX()"},{"p":"gameobjects","c":"GameObject","l":"getX()"},{"p":"rendering","c":"Artist","l":"getX()"},{"p":"collider","c":"Collider","l":"getY()"},{"p":"controller","c":"ObjectController","l":"getY()"},{"p":"gameobjects","c":"GameObject","l":"getY()"},{"p":"rendering","c":"Artist","l":"getY()"},{"p":"ui","c":"GameUI","l":"grabFocus()"},{"p":"playground","c":"HighscoreManager","l":"HighscoreManager()","u":"%3Cinit%3E()"},{"p":"collider","c":"Collider","l":"id"},{"p":"gameobjects","c":"GameObject","l":"id"},{"p":"playground","c":"Animation","l":"imageList"},{"p":"gameobjects","c":"GameObject","l":"isActive()"},{"p":"ui","c":"GameUI","l":"isPainting()"},{"p":"playground","c":"Playground","l":"isPaused()"},{"p":"playground","c":"Level1","l":"Level1()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level2","l":"Level2()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level3","l":"Level3()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level4","l":"Level4()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level5","l":"Level5()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level6","l":"Level6()","u":"%3Cinit%3E()"},{"p":"playground","c":"Level7","l":"Level7()","u":"%3Cinit%3E()"},{"p":"playground","c":"LevelBoss","l":"LevelBoss()","u":"%3Cinit%3E()"},{"p":"playground","c":"Playground","l":"levelFinished()"},{"p":"playground","c":"SpaceInvadersLevel","l":"levelFinished()"},{"p":"playground","c":"LevelHitTwice","l":"LevelHitTwice()","u":"%3Cinit%3E()"},{"p":"playground","c":"LevelWithBox","l":"LevelWithBox()","u":"%3Cinit%3E()"},{"p":"controller","c":"LimitedTimeController","l":"LimitedTimeController(double, double)","u":"%3Cinit%3E(double,double)"},{"p":"base","c":"GameLoop","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"base","c":"MultiLevelGame","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"gameobjects","c":"GameObject","l":"MASK"},{"p":"playground","c":"Level4","l":"MAX_HITS"},{"p":"playground","c":"LevelHitTwice","l":"MAX_HITS"},{"p":"controller","c":"MineController","l":"MineController(double)","u":"%3Cinit%3E(double)"},{"p":"base","c":"MultiLevelGame","l":"MultiLevelGame()","u":"%3Cinit%3E()"},{"p":"playground","c":"Music","l":"Music()","u":"%3Cinit%3E()"},{"p":"playground","c":"Music","l":"music(File)","u":"music(java.io.File)"},{"p":"controller","c":"ObjectController","l":"ObjectController()","u":"%3Cinit%3E()"},{"p":"controller","c":"EgoController","l":"onDown(KeyEvent, GameObject)","u":"onDown(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onLeft(KeyEvent, GameObject)","u":"onLeft(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onRight(KeyEvent, GameObject)","u":"onRight(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"CollisionAwareEgoController","l":"onSpace(KeyEvent, GameObject)","u":"onSpace(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onSpace(KeyEvent, GameObject)","u":"onSpace(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onStop(KeyEvent, GameObject)","u":"onStop(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"controller","c":"EgoController","l":"onUp(KeyEvent, GameObject)","u":"onUp(java.awt.event.KeyEvent,gameobjects.GameObject)"},{"p":"playground","c":"Playground","l":"Playground()","u":"%3Cinit%3E()"},{"p":"playground","c":"Playground","l":"preferredSizeX()"},{"p":"playground","c":"SpaceInvadersLevel","l":"preferredSizeX()"},{"p":"playground","c":"Playground","l":"preferredSizeY()"},{"p":"playground","c":"SpaceInvadersLevel","l":"preferredSizeY()"},{"p":"playground","c":"Playground","l":"prepareLevel(String)","u":"prepareLevel(java.lang.String)"},{"p":"playground","c":"SpaceInvadersLevel","l":"prepareLevel(String)","u":"prepareLevel(java.lang.String)"},{"p":"playground","c":"Playground","l":"processKeyEvents(Stack)","u":"processKeyEvents(java.util.Stack)"},{"p":"playground","c":"Playground","l":"processMouseEvents(Stack)","u":"processMouseEvents(java.util.Stack)"},{"p":"gameobjects","c":"GameObject","l":"RADIUS"},{"p":"playground","c":"HighscoreManager","l":"readHSFromFile()"},{"p":"gameobjects","c":"GameObject","l":"RECTANGLE"},{"p":"rendering","c":"RectArtist","l":"RectArtist(GameObject, double, double, Color)","u":"%3Cinit%3E(gameobjects.GameObject,double,double,java.awt.Color)"},{"p":"collider","c":"RectCollider","l":"RectCollider(String, GameObject, double, double)","u":"%3Cinit%3E(java.lang.String,gameobjects.GameObject,double,double)"},{"p":"gameobjects","c":"RectObject","l":"RectObject(String, Playground, double, double, double, double, double, double, Color)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,double,double,java.awt.Color)"},{"p":"playground","c":"Playground","l":"redraw(Graphics2D)","u":"redraw(java.awt.Graphics2D)"},{"p":"playground","c":"Playground","l":"redrawLevel(Graphics2D)","u":"redrawLevel(java.awt.Graphics2D)"},{"p":"playground","c":"SpaceInvadersLevel","l":"redrawLevel(Graphics2D)","u":"redrawLevel(java.awt.Graphics2D)"},{"p":"ui","c":"GameUI","l":"repaint()"},{"p":"playground","c":"Playground","l":"reset()"},{"p":"ui","c":"GameUI","l":"resetAction()"},{"p":"playground","c":"Playground","l":"resetFlags(int)"},{"p":"controller","c":"CollisionAwareEgoController","l":"restoreDynamicState()"},{"p":"base","c":"GameLoop","l":"runGame(String[])","u":"runGame(java.lang.String[])"},{"p":"playground","c":"SaveGame","l":"save()"},{"p":"controller","c":"CollisionAwareEgoController","l":"saveDynamicState()"},{"p":"playground","c":"SaveGame","l":"SaveGame()","u":"%3Cinit%3E()"},{"p":"gameobjects","c":"GameObject","l":"scol"},{"p":"gameobjects","c":"GameObject","l":"setActive(boolean)"},{"p":"gameobjects","c":"GameObject","l":"setColliders(LinkedList)","u":"setColliders(java.util.LinkedList)"},{"p":"gameobjects","c":"GameObject","l":"setComponentProperty(String, String, Object)","u":"setComponentProperty(java.lang.String,java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setController(ObjectController)","u":"setController(controller.ObjectController)"},{"p":"controller","c":"ObjectController","l":"setDummy(String)","u":"setDummy(java.lang.String)"},{"p":"playground","c":"Playground","l":"setGameTime(double)"},{"p":"playground","c":"Playground","l":"setGlobalFlag(String, Object)","u":"setGlobalFlag(java.lang.String,java.lang.Object)"},{"p":"playground","c":"Playground","l":"setLevelFlag(String, Object)","u":"setLevelFlag(java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setObject(GameObject)","u":"setObject(gameobjects.GameObject)"},{"p":"controller","c":"ObjectController","l":"setObject(GameObject)","u":"setObject(gameobjects.GameObject)"},{"p":"gameobjects","c":"GameObject","l":"setObjectController(ObjectController)","u":"setObjectController(controller.ObjectController)"},{"p":"gameobjects","c":"GameObject","l":"setObjectFlag(String, Object)","u":"setObjectFlag(java.lang.String,java.lang.Object)"},{"p":"collider","c":"Collider","l":"setOffsets(double, double)","u":"setOffsets(double,double)"},{"p":"ui","c":"GameUI","l":"setPainting()"},{"p":"playground","c":"Playground","l":"setPaused(boolean)"},{"p":"collider","c":"Collider","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"controller","c":"ObjectController","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"gameobjects","c":"GameObject","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"ui","c":"GameUI","l":"setPlayground(Playground)","u":"setPlayground(playground.Playground)"},{"p":"gameobjects","c":"TextObject","l":"setText(String)","u":"setText(java.lang.String)"},{"p":"rendering","c":"TextArtist","l":"setText(String)","u":"setText(java.lang.String)"},{"p":"rendering","c":"TextArtist","l":"setTextHeight(double)"},{"p":"rendering","c":"TextArtist","l":"setTextWidth(double)"},{"p":"playground","c":"Playground","l":"setTimestep(double)"},{"p":"controller","c":"ObjectController","l":"setVX(double)"},{"p":"gameobjects","c":"GameObject","l":"setVX(double)"},{"p":"controller","c":"ObjectController","l":"setVY(double)"},{"p":"gameobjects","c":"GameObject","l":"setVY(double)"},{"p":"controller","c":"ObjectController","l":"setX(double)"},{"p":"gameobjects","c":"GameObject","l":"setX(double)"},{"p":"controller","c":"ObjectController","l":"setY(double)"},{"p":"gameobjects","c":"GameObject","l":"setY(double)"},{"p":"playground","c":"SpaceInvadersLevel","l":"SHOTSPEED"},{"p":"playground","c":"Animation","l":"showtimeList"},{"p":"controller","c":"SimpleShotController","l":"SimpleShotController()","u":"%3Cinit%3E()"},{"p":"base","c":"GameLoop","l":"SIZEX"},{"p":"base","c":"GameLoop","l":"SIZEY"},{"p":"playground","c":"SpaceInvadersLevel","l":"SpaceInvadersLevel()","u":"%3Cinit%3E()"},{"p":"controller","c":"CollisionAwareEgoController","l":"stopObject()"},{"p":"controller","c":"EgoController","l":"stopObject()"},{"p":"rendering","c":"TextArtist","l":"TextArtist(GameObject, String, int, Color)","u":"%3Cinit%3E(gameobjects.GameObject,java.lang.String,int,java.awt.Color)"},{"p":"gameobjects","c":"TextObject","l":"TextObject(String, Playground, double, double, double, double, String, int, Color)","u":"%3Cinit%3E(java.lang.String,playground.Playground,double,double,double,double,java.lang.String,int,java.awt.Color)"},{"p":"playground","c":"Playground","l":"togglePause()"},{"p":"collider","c":"CircleCollider","l":"toString()"},{"p":"collider","c":"Collider","l":"toString()"},{"p":"collider","c":"RectCollider","l":"toString()"},{"p":"controller","c":"EgoController","l":"updateObject()"},{"p":"controller","c":"EnemyController","l":"updateObject()"},{"p":"controller","c":"FallingStarController","l":"updateObject()"},{"p":"controller","c":"LimitedTimeController","l":"updateObject()"},{"p":"controller","c":"MineController","l":"updateObject()"},{"p":"controller","c":"ObjectController","l":"updateObject()"},{"p":"controller","c":"SimpleShotController","l":"updateObject()"},{"p":"controller","c":"ZickZackController","l":"updateObject()"},{"p":"gameobjects","c":"GameObject","l":"updateObject()"},{"p":"playground","c":"Playground","l":"updateObjects()"},{"p":"ui","c":"GameUI","l":"waitWhilePainting()"},{"p":"playground","c":"HighscoreManager","l":"writeHSToFile(Integer, Integer)","u":"writeHSToFile(java.lang.Integer,java.lang.Integer)"},{"p":"controller","c":"ZickZackController","l":"ZickZackController(double, double)","u":"%3Cinit%3E(double,double)"}];updateSearchResults(); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/module-search-index.js b/spaceinvaders/GameProject/doc/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/spaceinvaders/GameProject/doc/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/overview-summary.html b/spaceinvaders/GameProject/doc/overview-summary.html new file mode 100644 index 0000000..2695f91 --- /dev/null +++ b/spaceinvaders/GameProject/doc/overview-summary.html @@ -0,0 +1,26 @@ + + + + +Generated Documentation (Untitled) + + + + + + + + + + + +
      + +

      index.html

      +
      + + diff --git a/spaceinvaders/GameProject/doc/overview-tree.html b/spaceinvaders/GameProject/doc/overview-tree.html new file mode 100644 index 0000000..a1aad86 --- /dev/null +++ b/spaceinvaders/GameProject/doc/overview-tree.html @@ -0,0 +1,146 @@ + + + + +Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For All Packages

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/package-search-index.js b/spaceinvaders/GameProject/doc/package-search-index.js new file mode 100644 index 0000000..f6dca23 --- /dev/null +++ b/spaceinvaders/GameProject/doc/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"base"},{"l":"collider"},{"l":"controller"},{"l":"gameobjects"},{"l":"playground"},{"l":"rendering"},{"l":"ui"}];updateSearchResults(); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/playground/Animation.html b/spaceinvaders/GameProject/doc/playground/Animation.html new file mode 100644 index 0000000..4b24d4e --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Animation.html @@ -0,0 +1,224 @@ + + + + +Animation + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Animation

      +
      +
      java.lang.Object +
      playground.Animation
      +
      +
      +
      +
      public class Animation +extends Object
      +
      +
      + +
      +
      + +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/HighscoreManager.html b/spaceinvaders/GameProject/doc/playground/HighscoreManager.html new file mode 100644 index 0000000..8603768 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/HighscoreManager.html @@ -0,0 +1,179 @@ + + + + +HighscoreManager + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class HighscoreManager

      +
      +
      java.lang.Object +
      playground.HighscoreManager
      +
      +
      +
      +
      public class HighscoreManager +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          HighscoreManager

          +
          public HighscoreManager()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          readHSFromFile

          +
          public int readHSFromFile()
          +
          +
        • +
        • +
          +

          writeHSToFile

          +
          public static void writeHSToFile(Integer pts, + Integer highscore)
          +
          +
        • +
        • +
          +

          closeFile

          +
          public void closeFile()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level1.html b/spaceinvaders/GameProject/doc/playground/Level1.html new file mode 100644 index 0000000..68c9ce8 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level1.html @@ -0,0 +1,151 @@ + + + + +Level1 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level1

      +
      + +
      +
      +
      public class Level1 +extends SpaceInvadersLevel
      +
      extends SpaceInvadersLevel with a boring start message
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level1

          +
          public Level1()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level2.html b/spaceinvaders/GameProject/doc/playground/Level2.html new file mode 100644 index 0000000..77b9ae0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level2.html @@ -0,0 +1,151 @@ + + + + +Level2 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level2

      +
      + +
      +
      +
      public class Level2 +extends SpaceInvadersLevel
      +
      extends extends SpaceInvadersLevel with a different startup message.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level2

          +
          public Level2()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level3.html b/spaceinvaders/GameProject/doc/playground/Level3.html new file mode 100644 index 0000000..ed2a2f1 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level3.html @@ -0,0 +1,153 @@ + + + + +Level3 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level3

      +
      + +
      +
      +
      public class Level3 +extends SpaceInvadersLevel
      +
      extends SpaceInvadersLevel with a ZigZack move of the enemies in + createSingleEnemy(String, double, double, double, double, ObjectController, double) and + sets a different getStartupMessage().
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level3

          +
          public Level3()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level4.html b/spaceinvaders/GameProject/doc/playground/Level4.html new file mode 100644 index 0000000..6808cf5 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level4.html @@ -0,0 +1,189 @@ + + + + +Level4 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level4

      +
      + +
      +
      +
      public class Level4 +extends SpaceInvadersLevel
      +
      extends extends SpaceInvadersLevel +
        +
      • Hit aliens twice to kill them +
      • they say AUA when not destroyed +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          MAX_HITS

          +
          public static final int MAX_HITS
          +
          constant defining the number of shots needed to destroy an enemy
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level4

          +
          public Level4()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level5.html b/spaceinvaders/GameProject/doc/playground/Level5.html new file mode 100644 index 0000000..69c8bfa --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level5.html @@ -0,0 +1,150 @@ + + + + +Level5 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level5

      +
      + +
      +
      +
      public class Level5 +extends SpaceInvadersLevel
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level5

          +
          public Level5()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level6.html b/spaceinvaders/GameProject/doc/playground/Level6.html new file mode 100644 index 0000000..4a5a3f7 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level6.html @@ -0,0 +1,150 @@ + + + + +Level6 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level6

      +
      + +
      +
      +
      public class Level6 +extends SpaceInvadersLevel
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level6

          +
          public Level6()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Level7.html b/spaceinvaders/GameProject/doc/playground/Level7.html new file mode 100644 index 0000000..fa00eec --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Level7.html @@ -0,0 +1,150 @@ + + + + +Level7 + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Level7

      +
      + +
      +
      +
      public class Level7 +extends SpaceInvadersLevel
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Level7

          +
          public Level7()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/LevelBoss.html b/spaceinvaders/GameProject/doc/playground/LevelBoss.html new file mode 100644 index 0000000..f827bfe --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/LevelBoss.html @@ -0,0 +1,159 @@ + + + + +LevelBoss + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class LevelBoss

      +
      + +
      +
      +
      public class LevelBoss +extends SpaceInvadersLevel
      +
      Class that realizes all the game logic of a very simple game level. The level contains for now + only two objects that are GameObject subclasses: FallingStar and + EgoObject. Functions performed by this class are: +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          LevelBoss

          +
          public LevelBoss()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/LevelHitTwice.html b/spaceinvaders/GameProject/doc/playground/LevelHitTwice.html new file mode 100644 index 0000000..0012fd9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/LevelHitTwice.html @@ -0,0 +1,188 @@ + + + + +LevelHitTwice + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class LevelHitTwice

      +
      + +
      +
      +
      public class LevelHitTwice +extends SpaceInvadersLevel
      +
      extends SpaceInvadersLevel with 10 enemies that need two shots each to be destroyed.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          MAX_HITS

          +
          public static final int MAX_HITS
          +
          constant defining the number of shots needed to destroy an enemy
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          LevelHitTwice

          +
          public LevelHitTwice()
          +
          constructor setting internal name to 'hitTwice'
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/LevelWithBox.html b/spaceinvaders/GameProject/doc/playground/LevelWithBox.html new file mode 100644 index 0000000..55c2082 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/LevelWithBox.html @@ -0,0 +1,150 @@ + + + + +LevelWithBox + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class LevelWithBox

      +
      + +
      +
      +
      public class LevelWithBox +extends SpaceInvadersLevel
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          LevelWithBox

          +
          public LevelWithBox()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Music.html b/spaceinvaders/GameProject/doc/playground/Music.html new file mode 100644 index 0000000..72257a4 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Music.html @@ -0,0 +1,159 @@ + + + + +Music + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Music

      +
      +
      java.lang.Object +
      playground.Music
      +
      +
      +
      +
      public class Music +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Music

          +
          public Music()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          music

          +
          public static void music(File track)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/Playground.html b/spaceinvaders/GameProject/doc/playground/Playground.html new file mode 100644 index 0000000..403e5bc --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/Playground.html @@ -0,0 +1,708 @@ + + + + +Playground + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class Playground

      +
      +
      java.lang.Object +
      playground.Playground
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      SpaceInvadersLevel
      +
      +
      +
      public abstract class Playground +extends Object
      +
      Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation. In particular, an instance of Playground +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          FLAGS_GLOBAL

          +
          public static final int FLAGS_GLOBAL
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          FLAGS_LEVEL

          +
          public static final int FLAGS_LEVEL
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          FLAGS_ALL

          +
          public static final int FLAGS_ALL
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          Playground

          +
          public Playground()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          preferredSizeX

          +
          public abstract int preferredSizeX()
          +
          +
        • +
        • +
          +

          preferredSizeY

          +
          public abstract int preferredSizeY()
          +
          +
        • +
        • +
          +

          addObject

          +
          public void addObject(GameObject o)
          +
          Adds a graphics object to a level.
          +
          +
          Parameters:
          +
          o - GameObject The object to be added
          +
          +
          +
        • +
        • +
          +

          addObjectNow

          +
          public void addObjectNow(GameObject o)
          +
          Adds a graphics object to a level.
          +
          +
          Parameters:
          +
          o - GameObject The object to be added
          +
          +
          +
        • +
        • +
          +

          collectObjects

          +
          public LinkedList<GameObject> collectObjects(String substr, + boolean filterInactive)
          +
          Puts objects with a certain substring in their name into a LinkedLisrt and returns them.
          +
          +
          Parameters:
          +
          substr - The string that must be part of the object name if object is to be considered + found.
          +
          filterInactive - if set true only active objects are considered.
          +
          Returns:
          +
          a reference to a LinkedList filled with all objects that have substr in their + name
          +
          +
          +
        • +
        • +
          +

          deleteObject

          +
          public void deleteObject(String id)
          +
          Removes a graphics object from a level.
          +
          +
          Parameters:
          +
          id - String The unique identifier of the object
          +
          +
          +
        • +
        • +
          +

          deleteObjectNow

          +
          public void deleteObjectNow(String id)
          +
          Removes a graphics object from a level immediately, CAUTION.
          +
          +
          Parameters:
          +
          id - String The unique identifier of the object
          +
          +
          +
        • +
        • +
          +

          getObject

          +
          public GameObject getObject(String id)
          +
          Retrieves a graphics object by name.
          +
          +
          Parameters:
          +
          id - String Unique id of the object
          +
          Returns:
          +
          reference to the requested game object, or null if not found
          +
          +
          +
        • +
        • +
          +

          setGlobalFlag

          +
          public static void setGlobalFlag(String flag, + Object value)
          +
          Sets a level-wide permanent flag.
          +
          +
          Parameters:
          +
          flag - String Q unique name in this level. If it exists value is overwritten.
          +
          value - Object Any Object can be the value of a flag!
          +
          +
          +
        • +
        • +
          +

          setLevelFlag

          +
          public Object setLevelFlag(String flag, + Object value)
          +
          +
        • +
        • +
          +

          resetFlags

          +
          public void resetFlags(int mode)
          +
          mode can be: FLAGS_ALL (all), FLAGS_GLOBAL(global), FLAGs_LEVEL(level)
          +
          +
          Parameters:
          +
          mode - can be only one of FLAGS_GLOBAL FLAGS_ALL or + FLAGS_LEVEL
          +
          +
          +
        • +
        • +
          +

          getGlobalFlag

          +
          public static Object getGlobalFlag(String flag)
          +
          Retrieves a level-wide flag by name.
          +
          +
          Parameters:
          +
          flag - String Unique flag id
          +
          Returns:
          +
          the value associated with flag, or null if the flag does not exist.
          +
          +
          +
        • +
        • +
          +

          getOrCreateGlobalFlag

          +
          public static Object getOrCreateGlobalFlag(String flag, + Object value)
          +
          checks for existence and if not creates the new global flag with the given initial value. Returns the value. + afterwards it is guaranteed that no priorly existing value is overridden and that it definitely exists (created if not present before).
          +
          +
          Parameters:
          +
          flag - String name for the global flag (created if not present)
          +
          value - Object value to be stored (used only if flag was not present)
          +
          Returns:
          +
          the current value of the flag (maybe the initial one in case flag was not there before)
          +
          +
          +
        • +
        • +
          +

          getLevelFlag

          +
          public Object getLevelFlag(String flag)
          +
          +
        • +
        • +
          +

          getOrCreateLevelFlag

          +
          public Object getOrCreateLevelFlag(String flag, + Object createValue)
          +
          +
        • +
        • +
          +

          reset

          +
          public void reset()
          +
          Reinitializes the level.
          +
          +
        • +
        • +
          +

          isPaused

          +
          public boolean isPaused()
          +
          +
        • +
        • +
          +

          setPaused

          +
          public void setPaused(boolean p)
          +
          +
        • +
        • +
          +

          togglePause

          +
          public void togglePause()
          +
          +
        • +
        • +
          +

          processKeyEvents

          +
          public void processKeyEvents(Stack<KeyEvent> keyEvents)
          +
          Method meant to be filled with own code, processes Keyboard inputs.
          +
          +
          Parameters:
          +
          keyEvents - all collected KeyEvents collected since last game loop.
          +
          +
          +
        • +
        • +
          +

          processMouseEvents

          +
          public void processMouseEvents(Stack<MouseEvent> mouseEvents)
          +
          +
        • +
        • +
          +

          getKeyEvents

          +
          public Stack<KeyEvent> getKeyEvents()
          +
          +
        • +
        • +
          +

          getMouseEvents

          +
          public Stack<MouseEvent> getMouseEvents()
          +
          +
        • +
        • +
          +

          applyGameLogic

          +
          public abstract void applyGameLogic()
          +
          Method meant to be filled with own code, handles the entore game logic (collision checks, timed + events, ...).
          +
          +
        • +
        • +
          +

          prepareLevel

          +
          public abstract void prepareLevel(String level)
          +
          Sets up a single level. Prepares all objects etc.
          +
          +
          Parameters:
          +
          level - String a string identifying the level number etc
          +
          +
          +
        • +
        • +
          +

          gameOver

          +
          public abstract boolean gameOver()
          +
          +
        • +
        • +
          +

          levelFinished

          +
          public abstract boolean levelFinished()
          +
          +
        • +
        • +
          +

          getSizeX

          +
          public int getSizeX()
          +
          +
        • +
        • +
          +

          getSizeY

          +
          public int getSizeY()
          +
          +
        • +
        • +
          +

          updateObjects

          +
          public void updateObjects()
          +
          Calls all object update methods in level. Internal, never call directly.
          +
          +
        • +
        • +
          +

          setTimestep

          +
          public void setTimestep(double s)
          +
          +
        • +
        • +
          +

          getTimestep

          +
          public double getTimestep()
          +
          +
        • +
        • +
          +

          setGameTime

          +
          public void setGameTime(double s)
          +
          set the game time value (in seconds)
          +
          +
          Parameters:
          +
          s - seconds the game is running
          +
          +
          +
        • +
        • +
          +

          getGameTime

          +
          public double getGameTime()
          +
          returns time in seconds since level start
          +
          +
        • +
        • +
          +

          redrawLevel

          +
          public abstract void redrawLevel(Graphics2D g2)
          +
          To be redefined!! Draws mainly h level background and global information like points etc.
          +
          +
          Parameters:
          +
          g2 - Graphics2D abstract drawing object of java Swing, used to carry out all drawing + operations.
          +
          +
          +
        • +
        • +
          +

          redraw

          +
          public void redraw(Graphics2D g2)
          +
          Internal, do not call directly.
          +
          +
          Parameters:
          +
          g2 - Graphics2D abstract drawing object of java Swing, used to carry out all drawing + operations.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/SaveGame.html b/spaceinvaders/GameProject/doc/playground/SaveGame.html new file mode 100644 index 0000000..da7c0e9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/SaveGame.html @@ -0,0 +1,159 @@ + + + + +SaveGame + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class SaveGame

      +
      +
      java.lang.Object +
      playground.SaveGame
      +
      +
      +
      +
      public class SaveGame +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          SaveGame

          +
          public SaveGame()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          save

          +
          public static void save()
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/SpaceInvadersLevel.html b/spaceinvaders/GameProject/doc/playground/SpaceInvadersLevel.html new file mode 100644 index 0000000..01312de --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/SpaceInvadersLevel.html @@ -0,0 +1,341 @@ + + + + +SpaceInvadersLevel + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package playground
      +

      Class SpaceInvadersLevel

      +
      +
      java.lang.Object +
      playground.Playground +
      playground.SpaceInvadersLevel
      +
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      Level1, Level2, Level3, Level4, Level5, Level6, Level7, LevelBoss, LevelHitTwice, LevelWithBox
      +
      +
      +
      public class SpaceInvadersLevel +extends Playground
      +
      Class that realizes all the game logic of a very simple game level. The level contains for now + only two objects that are GameObject subclasses: FallingStar and + EgoObject. Functions performed by this class are: +
        +
      • initially set up the level, spawn all object etc., in method prepareLevel(java.lang.String) +
      • React to game events in actionIfEgoCollidesWithCollect(GameObject, GameObject) , + actionIfEgoCollidesWithEnemy(GameObject, GameObject), etc. +
      • define basic object movement rules for all objects in the level in the various + ObjectController subclasses: EgoController and FallingStarController. +
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Field Details

        +
          +
        • +
          +

          SHOTSPEED

          +
          public static final double SHOTSPEED
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        • +
          +

          EGOSPEED

          +
          public static final double EGOSPEED
          +
          +
          See Also:
          +
          + +
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          SpaceInvadersLevel

          +
          public SpaceInvadersLevel()
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          prepareLevel

          +
          public void prepareLevel(String id)
          +
          initially sets up the level. Not called by user interaction, but called every time a layer is + restarted from scratch. So make sure that this is possible. Here, resources are loaded only + once even if method is called several times.
          +
          +
          Specified by:
          +
          prepareLevel in class Playground
          +
          Parameters:
          +
          id - String identifies level.
          +
          +
          +
        • +
        • +
          +

          redrawLevel

          +
          public void redrawLevel(Graphics2D g2)
          +
          (re)draws the level but NOT the objects, they draw themselves. Called by the main game loop. + This method mainly draws the background and the scoreboard.
          +
          +
          Specified by:
          +
          redrawLevel in class Playground
          +
          Parameters:
          +
          g2 - Graphics2D object that can, and should be, draw on.
          +
          +
          +
        • +
        • +
          +

          applyGameLogic

          +
          public void applyGameLogic()
          +
          applies the logic of the level: For now, this is just about deleting shots that are leaving the + screen and calling methods 'actionIf..' in case objects collide.
          +
          +
          Specified by:
          +
          applyGameLogic in class Playground
          +
          +
          +
        • +
        • +
          +

          gameOver

          +
          public boolean gameOver()
          +
          +
          Specified by:
          +
          gameOver in class Playground
          +
          +
          +
        • +
        • +
          +

          levelFinished

          +
          public boolean levelFinished()
          +
          +
          Specified by:
          +
          levelFinished in class Playground
          +
          +
          +
        • +
        • +
          +

          preferredSizeX

          +
          public int preferredSizeX()
          +
          calculates and returns the preferred size of the level (in pixel) for X-direction
          +
          +
          Specified by:
          +
          preferredSizeX in class Playground
          +
          +
          +
        • +
        • +
          +

          preferredSizeY

          +
          public int preferredSizeY()
          +
          calculates and returns the preferred size of the level (in pixel) for Y-direction
          +
          +
          Specified by:
          +
          preferredSizeY in class Playground
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Animation.html b/spaceinvaders/GameProject/doc/playground/class-use/Animation.html new file mode 100644 index 0000000..ecc0437 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Animation.html @@ -0,0 +1,112 @@ + + + + +Uses of Class playground.Animation + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Animation

      +
      +
      Packages that use Animation
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/HighscoreManager.html b/spaceinvaders/GameProject/doc/playground/class-use/HighscoreManager.html new file mode 100644 index 0000000..d75aac4 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/HighscoreManager.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.HighscoreManager + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.HighscoreManager

      +
      +No usage of playground.HighscoreManager
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level1.html b/spaceinvaders/GameProject/doc/playground/class-use/Level1.html new file mode 100644 index 0000000..a7dd5c6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level1.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level1 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level1

      +
      +No usage of playground.Level1
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level2.html b/spaceinvaders/GameProject/doc/playground/class-use/Level2.html new file mode 100644 index 0000000..f72fc8f --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level2.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level2 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level2

      +
      +No usage of playground.Level2
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level3.html b/spaceinvaders/GameProject/doc/playground/class-use/Level3.html new file mode 100644 index 0000000..0701b94 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level3.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level3 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level3

      +
      +No usage of playground.Level3
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level4.html b/spaceinvaders/GameProject/doc/playground/class-use/Level4.html new file mode 100644 index 0000000..ca1aeb9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level4.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level4 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level4

      +
      +No usage of playground.Level4
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level5.html b/spaceinvaders/GameProject/doc/playground/class-use/Level5.html new file mode 100644 index 0000000..f22a1e7 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level5.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level5 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level5

      +
      +No usage of playground.Level5
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level6.html b/spaceinvaders/GameProject/doc/playground/class-use/Level6.html new file mode 100644 index 0000000..1c39b21 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level6.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level6 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level6

      +
      +No usage of playground.Level6
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Level7.html b/spaceinvaders/GameProject/doc/playground/class-use/Level7.html new file mode 100644 index 0000000..ae31ec9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Level7.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Level7 + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Level7

      +
      +No usage of playground.Level7
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/LevelBoss.html b/spaceinvaders/GameProject/doc/playground/class-use/LevelBoss.html new file mode 100644 index 0000000..87fbc9e --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/LevelBoss.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelBoss + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.LevelBoss

      +
      +No usage of playground.LevelBoss
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/LevelHitTwice.html b/spaceinvaders/GameProject/doc/playground/class-use/LevelHitTwice.html new file mode 100644 index 0000000..8f2de74 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/LevelHitTwice.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelHitTwice + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.LevelHitTwice

      +
      +No usage of playground.LevelHitTwice
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/LevelWithBox.html b/spaceinvaders/GameProject/doc/playground/class-use/LevelWithBox.html new file mode 100644 index 0000000..15c4ab8 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/LevelWithBox.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.LevelWithBox + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.LevelWithBox

      +
      +No usage of playground.LevelWithBox
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Music.html b/spaceinvaders/GameProject/doc/playground/class-use/Music.html new file mode 100644 index 0000000..91cd361 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Music.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.Music + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Music

      +
      +No usage of playground.Music
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/Playground.html b/spaceinvaders/GameProject/doc/playground/class-use/Playground.html new file mode 100644 index 0000000..90a0191 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/Playground.html @@ -0,0 +1,306 @@ + + + + +Uses of Class playground.Playground + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.Playground

      +
      +
      Packages that use Playground
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/SaveGame.html b/spaceinvaders/GameProject/doc/playground/class-use/SaveGame.html new file mode 100644 index 0000000..482ed63 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/SaveGame.html @@ -0,0 +1,58 @@ + + + + +Uses of Class playground.SaveGame + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.SaveGame

      +
      +No usage of playground.SaveGame
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/class-use/SpaceInvadersLevel.html b/spaceinvaders/GameProject/doc/playground/class-use/SpaceInvadersLevel.html new file mode 100644 index 0000000..06fba4a --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/class-use/SpaceInvadersLevel.html @@ -0,0 +1,128 @@ + + + + +Uses of Class playground.SpaceInvadersLevel + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      playground.SpaceInvadersLevel

      +
      +
      Packages that use SpaceInvadersLevel
      +
      +
      Package
      +
      Description
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/package-summary.html b/spaceinvaders/GameProject/doc/playground/package-summary.html new file mode 100644 index 0000000..80fa6e4 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/package-summary.html @@ -0,0 +1,136 @@ + + + + +playground + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package playground

      +
      +
      +
      package playground
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/package-tree.html b/spaceinvaders/GameProject/doc/playground/package-tree.html new file mode 100644 index 0000000..61405e7 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/package-tree.html @@ -0,0 +1,93 @@ + + + + +playground Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package playground

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/playground/package-use.html b/spaceinvaders/GameProject/doc/playground/package-use.html new file mode 100644 index 0000000..6c0e2a0 --- /dev/null +++ b/spaceinvaders/GameProject/doc/playground/package-use.html @@ -0,0 +1,169 @@ + + + + +Uses of Package playground + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      playground

      +
      +
      Packages that use playground
      +
      +
      Package
      +
      Description
      + +
       
      + +
      +
      The controller package contains Object controllers that govern an objects behavior, without being + involved in its collision or drawing properties.
      +
      + +
       
      + +
       
      + +
       
      + +
       
      +
      +
      +
        +
      • +
        +
        Classes in playground used by collider
        +
        +
        Class
        +
        Description
        + +
        +
        Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in playground used by controller
        +
        +
        Class
        +
        Description
        + +
        +
        Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in playground used by gameobjects
        +
        +
        Class
        +
        Description
        + +
         
        + +
        +
        Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in playground used by playground
        +
        +
        Class
        +
        Description
        + +
        +
        Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
        +
        + +
        +
        Class that realizes all the game logic of a very simple game level.
        +
        +
        +
        +
      • +
      • +
        +
        Classes in playground used by rendering
        +
        +
        Class
        +
        Description
        + +
         
        +
        +
        +
      • +
      • +
        +
        Classes in playground used by ui
        +
        +
        Class
        +
        Description
        + +
        +
        Playground represents a level of the game, focusing on the game LOGIC, i.e., not so much on the + graphical representation.
        +
        +
        +
        +
      • +
      +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/AnimationArtist.html b/spaceinvaders/GameProject/doc/rendering/AnimationArtist.html new file mode 100644 index 0000000..4e42fa9 --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/AnimationArtist.html @@ -0,0 +1,194 @@ + + + + +AnimationArtist + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package rendering
      +

      Class AnimationArtist

      +
      +
      java.lang.Object +
      rendering.Artist +
      rendering.AnimationArtist
      +
      +
      +
      +
      +
      public class AnimationArtist +extends Artist
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          AnimationArtist

          +
          public AnimationArtist(GameObject go, + Animation anim, + double t0, + String playmode, + double scale)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getW

          +
          public double getW()
          +
          +
        • +
        • +
          +

          getH

          +
          public double getH()
          +
          +
        • +
        • +
          +

          draw

          +
          public void draw(Graphics2D g)
          +
          +
          Specified by:
          +
          draw in class Artist
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/Artist.html b/spaceinvaders/GameProject/doc/rendering/Artist.html new file mode 100644 index 0000000..d0c4efc --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/Artist.html @@ -0,0 +1,181 @@ + + + + +Artist + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package rendering
      +

      Class Artist

      +
      +
      java.lang.Object +
      rendering.Artist
      +
      +
      +
      +
      Direct Known Subclasses:
      +
      AnimationArtist, CircleArtist, RectArtist, TextArtist
      +
      +
      +
      public abstract class Artist +extends Object
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getX

          +
          public double getX()
          +
          +
        • +
        • +
          +

          getY

          +
          public double getY()
          +
          +
        • +
        • +
          +

          getVX

          +
          public double getVX()
          +
          +
        • +
        • +
          +

          getVY

          +
          public double getVY()
          +
          +
        • +
        • +
          +

          getGameTime

          +
          public double getGameTime()
          +
          +
        • +
        • +
          +

          draw

          +
          public abstract void draw(Graphics2D g)
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/CircleArtist.html b/spaceinvaders/GameProject/doc/rendering/CircleArtist.html new file mode 100644 index 0000000..afd93a6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/CircleArtist.html @@ -0,0 +1,180 @@ + + + + +CircleArtist + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package rendering
      +

      Class CircleArtist

      +
      +
      java.lang.Object +
      rendering.Artist +
      rendering.CircleArtist
      +
      +
      +
      +
      +
      public class CircleArtist +extends Artist
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          CircleArtist

          +
          public CircleArtist(GameObject go)
          +
          +
        • +
        • +
          +

          CircleArtist

          +
          public CircleArtist(GameObject go, + double egoRad, + Color color)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/RectArtist.html b/spaceinvaders/GameProject/doc/rendering/RectArtist.html new file mode 100644 index 0000000..d63981b --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/RectArtist.html @@ -0,0 +1,174 @@ + + + + +RectArtist + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package rendering
      +

      Class RectArtist

      +
      +
      java.lang.Object +
      rendering.Artist +
      rendering.RectArtist
      +
      +
      +
      +
      +
      public class RectArtist +extends Artist
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          RectArtist

          +
          public RectArtist(GameObject go, + double width, + double height, + Color color)
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        + +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/TextArtist.html b/spaceinvaders/GameProject/doc/rendering/TextArtist.html new file mode 100644 index 0000000..792d10b --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/TextArtist.html @@ -0,0 +1,244 @@ + + + + +TextArtist + + + + + + + + + + + + + + + +
      + +
      +
      + +
      +
      Package rendering
      +

      Class TextArtist

      +
      +
      java.lang.Object +
      rendering.Artist +
      rendering.TextArtist
      +
      +
      +
      +
      +
      public class TextArtist +extends Artist
      +
      Rendering an object as a text of a specified color, size and font.
      +
      +
      + +
      +
      +
        + +
      • +
        +

        Constructor Details

        +
          +
        • +
          +

          TextArtist

          +
          public TextArtist(GameObject go, + String text, + int size, + Color textColor)
          +
          Constructor to intitialize the TextArtist attributes
          +
          +
          Parameters:
          +
          go - GameObject to be used for xy coordinate reference
          +
          text - the text to draw
          +
          size - point size to be used for font "Serif"
          +
          textColor - color to draw the text with (foreground)
          +
          +
          +
        • +
        +
        +
      • + +
      • +
        +

        Method Details

        +
          +
        • +
          +

          getText

          +
          public String getText()
          +
          +
        • +
        • +
          +

          setText

          +
          public void setText(String s)
          +
          +
        • +
        • +
          +

          getTextWidth

          +
          public double getTextWidth()
          +
          +
        • +
        • +
          +

          setTextWidth

          +
          public void setTextWidth(double textWidth)
          +
          +
        • +
        • +
          +

          getTextHeight

          +
          public double getTextHeight()
          +
          +
        • +
        • +
          +

          setTextHeight

          +
          public void setTextHeight(double textHeight)
          +
          +
        • +
        • +
          +

          draw

          +
          public void draw(Graphics2D g)
          +
          Draw the text.
          +
          +
          Specified by:
          +
          draw in class Artist
          +
          Parameters:
          +
          g - The Swing graphics context.
          +
          +
          +
        • +
        +
        +
      • +
      +
      + +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/class-use/AnimationArtist.html b/spaceinvaders/GameProject/doc/rendering/class-use/AnimationArtist.html new file mode 100644 index 0000000..c104d3b --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/class-use/AnimationArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.AnimationArtist + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      rendering.AnimationArtist

      +
      +No usage of rendering.AnimationArtist
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/class-use/Artist.html b/spaceinvaders/GameProject/doc/rendering/class-use/Artist.html new file mode 100644 index 0000000..4e34e5e --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/class-use/Artist.html @@ -0,0 +1,112 @@ + + + + +Uses of Class rendering.Artist + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      rendering.Artist

      +
      +
      Packages that use Artist
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/class-use/CircleArtist.html b/spaceinvaders/GameProject/doc/rendering/class-use/CircleArtist.html new file mode 100644 index 0000000..7bd8998 --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/class-use/CircleArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.CircleArtist + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      rendering.CircleArtist

      +
      +No usage of rendering.CircleArtist
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/class-use/RectArtist.html b/spaceinvaders/GameProject/doc/rendering/class-use/RectArtist.html new file mode 100644 index 0000000..c36d4b2 --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/class-use/RectArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.RectArtist + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      rendering.RectArtist

      +
      +No usage of rendering.RectArtist
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/class-use/TextArtist.html b/spaceinvaders/GameProject/doc/rendering/class-use/TextArtist.html new file mode 100644 index 0000000..aaac408 --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/class-use/TextArtist.html @@ -0,0 +1,58 @@ + + + + +Uses of Class rendering.TextArtist + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Class
      rendering.TextArtist

      +
      +No usage of rendering.TextArtist
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/package-summary.html b/spaceinvaders/GameProject/doc/rendering/package-summary.html new file mode 100644 index 0000000..5f1dc4f --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/package-summary.html @@ -0,0 +1,93 @@ + + + + +rendering + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Package rendering

      +
      +
      +
      package rendering
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/package-tree.html b/spaceinvaders/GameProject/doc/rendering/package-tree.html new file mode 100644 index 0000000..31021fb --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/package-tree.html @@ -0,0 +1,79 @@ + + + + +rendering Class Hierarchy + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Hierarchy For Package rendering

      +Package Hierarchies: + +
      +
      +

      Class Hierarchy

      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/rendering/package-use.html b/spaceinvaders/GameProject/doc/rendering/package-use.html new file mode 100644 index 0000000..3fa580d --- /dev/null +++ b/spaceinvaders/GameProject/doc/rendering/package-use.html @@ -0,0 +1,93 @@ + + + + +Uses of Package rendering + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Uses of Package
      rendering

      +
      +
      Packages that use rendering
      +
      +
      Package
      +
      Description
      + +
       
      + +
       
      +
      +
      + +
      +
      +
      +
      + + diff --git a/spaceinvaders/GameProject/doc/resources/glass.png b/spaceinvaders/GameProject/doc/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/spaceinvaders/GameProject/doc/resources/glass.png differ diff --git a/spaceinvaders/GameProject/doc/resources/x.png b/spaceinvaders/GameProject/doc/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/spaceinvaders/GameProject/doc/resources/x.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..34abd18 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png new file mode 100644 index 0000000..f058a93 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_65_dadada_1x400.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..2ce04c1 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..a90afb8 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..dbe091f Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..5dc3593 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e723e17 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_222222_256x240.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..1f5f497 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_2e83ff_256x240.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..618f5b0 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_454545_256x240.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..ee5e33f Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_888888_256x240.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7e8ebc1 Binary files /dev/null and b/spaceinvaders/GameProject/doc/script-dir/images/ui-icons_cd0a0a_256x240.png differ diff --git a/spaceinvaders/GameProject/doc/script-dir/jquery-3.5.1.min.js b/spaceinvaders/GameProject/doc/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/spaceinvaders/GameProject/doc/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
      "],col:[2,"","
      "],tr:[2,"","
      "],td:[3,"","
      "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
      ",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
      ",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
      "),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
        ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
          ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
          ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
          ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
          ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
          ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/script-dir/jquery-ui.structure.min.css b/spaceinvaders/GameProject/doc/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/spaceinvaders/GameProject/doc/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/script.js b/spaceinvaders/GameProject/doc/script.js new file mode 100644 index 0000000..0765364 --- /dev/null +++ b/spaceinvaders/GameProject/doc/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/spaceinvaders/GameProject/doc/search.js b/spaceinvaders/GameProject/doc/search.js new file mode 100644 index 0000000..df0e6fb --- /dev/null +++ b/spaceinvaders/GameProject/doc/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Types"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search-input"); + var reset = $("#reset-button"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
        • " + item.category + "
        • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
        • ").appendTo(ul); + var div = $("
          ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
          " + + item.d + "
          "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && !camelCaseMatcher.ignoreCase) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search-input").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search-input").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search-input").focus(); + } + } + }); +}); diff --git a/spaceinvaders/GameProject/doc/stylesheet.css b/spaceinvaders/GameProject/doc/stylesheet.css new file mode 100644 index 0000000..836c62d --- /dev/null +++ b/spaceinvaders/GameProject/doc/stylesheet.css @@ -0,0 +1,865 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:15px; +} +h5 { + font-size:14px; +} +h6 { + font-size:13px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; +} +:not(h1, h2, h3, h4, h5, h6) > code, +:not(h1, h2, h3, h4, h5, h6) > tt { + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 10px 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +ul.see-list, ul.see-list-long { + padding-left: 0; + list-style: none; +} +ul.see-list li { + display: inline; +} +ul.see-list li:not(:last-child):after, +ul.see-list-long li:not(:last-child):after { + content: ", "; + white-space: pre-wrap; +} +/* + * Styles for tables. + */ +.summary-table, .details-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0; + padding-top:10px; + padding-left:1px; + margin:0; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +div.table-tabs { + padding:10px 0 0 1px; + margin:0; +} +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div, .details-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-summary-item-name a:link, .col-summary-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .preview-comment { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +.preview-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search-input { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset-button { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.class-description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +ul.help-subtoc > li { + display: inline-block; + padding-right: 5px; + font-size: smaller; +} +ul.help-subtoc > li::before { + content: "\2022" ; + padding-right:2px; +} +span.help-note { + font-style: italic; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search-input { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search-input { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search-input { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/spaceinvaders/GameProject/doc/tag-search-index.js b/spaceinvaders/GameProject/doc/tag-search-index.js new file mode 100644 index 0000000..f2a440c --- /dev/null +++ b/spaceinvaders/GameProject/doc/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"}];updateSearchResults(); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/type-search-index.js b/spaceinvaders/GameProject/doc/type-search-index.js new file mode 100644 index 0000000..0ca7fcf --- /dev/null +++ b/spaceinvaders/GameProject/doc/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"gameobjects","l":"AnimatedGameobject"},{"p":"playground","l":"Animation"},{"p":"rendering","l":"AnimationArtist"},{"p":"rendering","l":"Artist"},{"p":"rendering","l":"CircleArtist"},{"p":"collider","l":"CircleCollider"},{"p":"collider","l":"Collider"},{"p":"controller","l":"CollisionAwareEgoController"},{"p":"controller","l":"EgoController"},{"p":"gameobjects","l":"EgoObject"},{"p":"controller","l":"EnemyController"},{"p":"gameobjects","l":"FallingStar"},{"p":"controller","l":"FallingStarController"},{"p":"base","l":"GameLoop"},{"p":"gameobjects","l":"GameObject"},{"p":"ui","l":"GameUI"},{"p":"playground","l":"HighscoreManager"},{"p":"playground","l":"Level1"},{"p":"playground","l":"Level2"},{"p":"playground","l":"Level3"},{"p":"playground","l":"Level4"},{"p":"playground","l":"Level5"},{"p":"playground","l":"Level6"},{"p":"playground","l":"Level7"},{"p":"playground","l":"LevelBoss"},{"p":"playground","l":"LevelHitTwice"},{"p":"playground","l":"LevelWithBox"},{"p":"controller","l":"LimitedTimeController"},{"p":"controller","l":"MineController"},{"p":"base","l":"MultiLevelGame"},{"p":"playground","l":"Music"},{"p":"controller","l":"ObjectController"},{"p":"playground","l":"Playground"},{"p":"rendering","l":"RectArtist"},{"p":"collider","l":"RectCollider"},{"p":"gameobjects","l":"RectObject"},{"p":"playground","l":"SaveGame"},{"p":"controller","l":"SimpleShotController"},{"p":"playground","l":"SpaceInvadersLevel"},{"p":"rendering","l":"TextArtist"},{"p":"gameobjects","l":"TextObject"},{"p":"controller","l":"ZickZackController"}];updateSearchResults(); \ No newline at end of file diff --git a/spaceinvaders/GameProject/doc/ui/GameUI.html b/spaceinvaders/GameProject/doc/ui/GameUI.html new file mode 100644 index 0000000..b9f6cd6 --- /dev/null +++ b/spaceinvaders/GameProject/doc/ui/GameUI.html @@ -0,0 +1,451 @@ + + + + +GameUI + + + + + + + + + + + + + + + +
          + +
          +
          + +
          +
          Package ui
          +

          Class GameUI

          +
          +
          java.lang.Object +
          ui.GameUI
          +
          +
          +
          +
          All Implemented Interfaces:
          +
          ActionListener, EventListener
          +
          +
          +
          public class GameUI +extends Object +implements ActionListener
          +
          creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games. Has a menu for loading, saving games and an about menu item. two buttons allow + restarting the game or exit.
          +
          +
          + +
          +
          +
            + +
          • +
            +

            Field Details

            +
              +
            • +
              +

              ACTION_NEW

              +
              public static final int ACTION_NEW
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_LOAD

              +
              public static final int ACTION_LOAD
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_SAVE

              +
              public static final int ACTION_SAVE
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_RESET

              +
              public static final int ACTION_RESET
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_QUIT

              +
              public static final int ACTION_QUIT
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_BUTTON

              +
              public static final int ACTION_BUTTON
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_PAUSE

              +
              public static final int ACTION_PAUSE
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            • +
              +

              ACTION_ABOUT

              +
              public static final int ACTION_ABOUT
              +
              +
              See Also:
              +
              + +
              +
              +
              +
            • +
            +
            +
          • + +
          • +
            +

            Constructor Details

            +
              +
            • +
              +

              GameUI

              +
              public GameUI(int sizeX, + int sizeY)
              +
              as typical for GUI classes this constructor creates all the components and adds them to the + frame. It adds this instance as ActionListener for all components. See + actionPerformed(ActionEvent) for details. It directly sets the frame visible as a + final step. + +

              + If you want to extend this GUI, create a subclass and add new elements in constructor. It is + necessary to call Component.revalidate() on frame attribute after changing/adding + components to panel or canvas, because the constructor here already sets + visibility to true and renders the IFrame. +

              +
              +
              Parameters:
              +
              sizeX - pixel dimension wanted in x direction
              +
              sizeY - pixel dimension wanted in y direction
              +
              +
              +
            • +
            +
            +
          • + +
          • +
            +

            Method Details

            +
              +
            • +
              +

              getCurrentKey

              +
              public HashMap<Integer,Integer> getCurrentKey()
              +
              +
            • +
            • +
              +

              getKeyEvents

              +
              public Stack<KeyEvent> getKeyEvents()
              +
              +
            • +
            • +
              +

              getMouseEvents

              +
              public Stack<MouseEvent> getMouseEvents()
              +
              +
            • +
            • +
              +

              repaint

              +
              public void repaint()
              +
              +
            • +
            • +
              +

              setPlayground

              +
              public void setPlayground(Playground pg)
              +
              +
            • +
            • +
              +

              isPainting

              +
              public boolean isPainting()
              +
              +
            • +
            • +
              +

              setPainting

              +
              public void setPainting()
              +
              +
            • +
            • +
              +

              waitWhilePainting

              +
              public void waitWhilePainting()
              +
              +
            • +
            • +
              +

              getNewAction

              +
              public static int getNewAction()
              +
              +
            • +
            • +
              +

              resetAction

              +
              public static void resetAction()
              +
              +
            • +
            • +
              +

              grabFocus

              +
              public void grabFocus()
              +
              +
            • +
            • +
              +

              actionPerformed

              +
              public void actionPerformed(ActionEvent ae)
              +
              interface implementation of ActionListener to respond to GUI element actions. It sets the + attribute of newAction which is read by GameLoop.runGame to check for GUI actions.
              +
              +
              Specified by:
              +
              actionPerformed in interface ActionListener
              +
              +
              +
            • +
            +
            +
          • +
          +
          + +
          +
          +
          + + diff --git a/spaceinvaders/GameProject/doc/ui/class-use/GameUI.html b/spaceinvaders/GameProject/doc/ui/class-use/GameUI.html new file mode 100644 index 0000000..116a72c --- /dev/null +++ b/spaceinvaders/GameProject/doc/ui/class-use/GameUI.html @@ -0,0 +1,58 @@ + + + + +Uses of Class ui.GameUI + + + + + + + + + + + + + + + +
          + +
          +
          +
          +

          Uses of Class
          ui.GameUI

          +
          +No usage of ui.GameUI
          +
          +
          + + diff --git a/spaceinvaders/GameProject/doc/ui/package-summary.html b/spaceinvaders/GameProject/doc/ui/package-summary.html new file mode 100644 index 0000000..2f5a88c --- /dev/null +++ b/spaceinvaders/GameProject/doc/ui/package-summary.html @@ -0,0 +1,86 @@ + + + + +ui + + + + + + + + + + + + + + + +
          + +
          +
          +
          +

          Package ui

          +
          +
          +
          package ui
          +
          +
            +
          • +
            +
            Classes
            +
            +
            Class
            +
            Description
            + +
            +
            creates the game UI JFrame containing a canvas (see class GamePanel)) for the levels to + paint the games.
            +
            +
            +
            +
          • +
          +
          +
          +
          +
          + + diff --git a/spaceinvaders/GameProject/doc/ui/package-tree.html b/spaceinvaders/GameProject/doc/ui/package-tree.html new file mode 100644 index 0000000..ae69959 --- /dev/null +++ b/spaceinvaders/GameProject/doc/ui/package-tree.html @@ -0,0 +1,72 @@ + + + + +ui Class Hierarchy + + + + + + + + + + + + + + + +
          + +
          +
          +
          +

          Hierarchy For Package ui

          +Package Hierarchies: + +
          +
          +

          Class Hierarchy

          + +
          +
          +
          +
          + + diff --git a/spaceinvaders/GameProject/doc/ui/package-use.html b/spaceinvaders/GameProject/doc/ui/package-use.html new file mode 100644 index 0000000..7549e00 --- /dev/null +++ b/spaceinvaders/GameProject/doc/ui/package-use.html @@ -0,0 +1,58 @@ + + + + +Uses of Package ui + + + + + + + + + + + + + + + +
          + +
          +
          +
          +

          Uses of Package
          ui

          +
          +No usage of ui
          +
          +
          + + diff --git a/spaceinvaders/GameProject/highscore.txt b/spaceinvaders/GameProject/highscore.txt index 42f77c0..daea1ec 100644 --- a/spaceinvaders/GameProject/highscore.txt +++ b/spaceinvaders/GameProject/highscore.txt @@ -1 +1 @@ -13200 \ No newline at end of file +17200 \ No newline at end of file diff --git a/spaceinvaders/GameProject/log/log4j.log b/spaceinvaders/GameProject/log/log4j.log index 3943311..1a6119f 100644 --- a/spaceinvaders/GameProject/log/log4j.log +++ b/spaceinvaders/GameProject/log/log4j.log @@ -631,3 +631,171 @@ 2022-05-06 15:07:34,465 INFO playground.Animation - img added .\video/heart0.png 2022-05-06 15:07:34,475 INFO playground.Animation - img added .\video/heart1.png 2022-05-06 15:07:34,489 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:28:27,780 INFO base.GameLoop - GUI starts +2022-05-06 15:29:58,112 INFO base.GameLoop - GUI NEW +2022-05-06 15:29:58,114 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:29:58,256 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:29:58,283 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:29:58,294 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:29:58,308 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:29:58,323 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:29:58,335 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:29:58,345 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:29:58,355 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:29:58,387 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:29:58,395 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:29:58,412 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:30:09,825 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 15:30:09,827 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 15:30:09,854 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 15:30:09,860 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 15:30:09,866 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 15:30:09,872 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 15:30:09,878 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 15:30:09,885 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 15:30:09,890 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 15:30:09,895 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 15:30:09,916 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 15:30:09,922 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 15:30:09,932 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 15:41:50,124 INFO base.GameLoop - GUI starts +2022-05-06 17:46:34,145 INFO base.GameLoop - GUI starts +2022-05-06 17:46:37,975 INFO base.GameLoop - GUI NEW +2022-05-06 17:46:37,977 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:46:38,124 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:46:38,150 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:46:38,159 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:46:38,172 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:46:38,186 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:46:38,199 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:46:38,210 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:46:38,220 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:46:38,255 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:46:38,264 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:46:38,279 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:46:49,617 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:46:49,619 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:46:49,649 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:46:49,657 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:46:49,662 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:46:49,669 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:46:49,675 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:46:49,682 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:46:49,688 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:46:49,695 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:46:49,716 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:46:49,723 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:46:49,731 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:47:05,679 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:47:05,681 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-06 17:47:05,703 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-06 17:47:05,709 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-06 17:47:05,716 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-06 17:47:05,721 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-06 17:47:05,727 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-06 17:47:05,732 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-06 17:47:05,736 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-06 17:47:05,741 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-06 17:47:05,760 INFO playground.Animation - img added .\video/heart0.png +2022-05-06 17:47:05,765 INFO playground.Animation - img added .\video/heart1.png +2022-05-06 17:47:05,771 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-06 17:47:16,562 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-06 17:47:16,564 INFO base.GameLoop - reached end of levels +2022-05-06 17:47:16,565 INFO base.GameLoop - Game ends. Bye. +2022-05-10 18:22:21,133 INFO base.GameLoop - GUI starts +2022-05-10 18:22:24,786 INFO base.GameLoop - GUI NEW +2022-05-10 18:22:24,788 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:22:24,957 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:22:24,982 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:22:24,992 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:22:25,006 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:22:25,021 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:22:25,035 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:22:25,045 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:22:25,055 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:22:25,094 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:22:25,104 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:22:25,132 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:22:53,747 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:22:53,750 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:22:53,777 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:22:53,785 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:22:53,790 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:22:53,796 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:22:53,802 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:22:53,809 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:22:53,817 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:22:53,822 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:22:53,842 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:22:53,849 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:22:53,858 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:02,641 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:02,644 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:23:02,664 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:23:02,668 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:23:02,674 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:23:02,679 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:23:02,683 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:23:02,688 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:23:02,694 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:23:02,698 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:23:02,717 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:23:02,724 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:23:02,731 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:11,503 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:11,505 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-10 18:23:11,523 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-10 18:23:11,528 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-10 18:23:11,534 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-10 18:23:11,540 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-10 18:23:11,545 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-10 18:23:11,550 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-10 18:23:11,559 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-10 18:23:11,565 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-10 18:23:11,582 INFO playground.Animation - img added .\video/heart0.png +2022-05-10 18:23:11,588 INFO playground.Animation - img added .\video/heart1.png +2022-05-10 18:23:11,593 INFO playground.SpaceInvadersLevel - HIGHSCORE13200 +2022-05-10 18:23:19,337 INFO playground.HighscoreManager - Highscore file was opened and saved score: 17200 +2022-05-10 18:23:19,338 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-10 18:23:19,339 INFO base.GameLoop - reached end of levels +2022-05-10 18:23:19,340 INFO base.GameLoop - Game ends. Bye. +2022-05-11 16:11:37,923 INFO base.GameLoop - GUI starts +2022-05-11 16:11:40,726 INFO base.GameLoop - GUI NEW +2022-05-11 16:11:40,727 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:11:40,895 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:11:40,922 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:11:40,932 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:11:40,946 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:11:40,963 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:11:40,976 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:11:40,987 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:11:40,997 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:11:41,035 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:11:41,045 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:11:41,068 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 +2022-05-11 16:12:27,344 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-11 16:12:27,347 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:12:27,373 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:12:27,380 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:12:27,386 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:12:27,393 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:12:27,399 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:12:27,407 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:12:27,412 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:12:27,417 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:12:27,440 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:12:27,446 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:12:27,455 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 +2022-05-11 16:12:33,328 INFO playground.SpaceInvadersLevel - no enemies left, level done. +2022-05-11 16:12:33,329 INFO playground.SpaceInvadersLevel - PREPARE +2022-05-11 16:12:33,346 INFO playground.Animation - img added .\video/sweetAlien0.png +2022-05-11 16:12:33,352 INFO playground.Animation - img added .\video/sweetAlien1.png +2022-05-11 16:12:33,358 INFO playground.Animation - img added .\video/sweetAlien2.png +2022-05-11 16:12:33,362 INFO playground.Animation - img added .\video/sweetAlien3.png +2022-05-11 16:12:33,366 INFO playground.Animation - img added .\video/sweetAlien4.png +2022-05-11 16:12:33,372 INFO playground.Animation - img added .\video/sweetAlien5.png +2022-05-11 16:12:33,377 INFO playground.Animation - img added .\video/sweetAlien6.png +2022-05-11 16:12:33,381 INFO playground.Animation - img added .\video/sweetAlien7.png +2022-05-11 16:12:33,399 INFO playground.Animation - img added .\video/heart0.png +2022-05-11 16:12:33,406 INFO playground.Animation - img added .\video/heart1.png +2022-05-11 16:12:33,412 INFO playground.SpaceInvadersLevel - HIGHSCORE17200 diff --git a/spaceinvaders/GameProject/src/base/MultiLevelGame.java b/spaceinvaders/GameProject/src/base/MultiLevelGame.java index 5f19050..bfc6801 100644 --- a/spaceinvaders/GameProject/src/base/MultiLevelGame.java +++ b/spaceinvaders/GameProject/src/base/MultiLevelGame.java @@ -2,6 +2,7 @@ package base; import java.io.IOException; +import playground.LevelWithBox; import playground.Level5; import playground.Level6; import playground.Level7; @@ -12,6 +13,7 @@ public class MultiLevelGame extends GameLoop { @Override void defineLevels() { this.resetLevels(); + this.addLevel(new LevelWithBox()); this.addLevel(new Level5()); this.addLevel(new Level6()); this.addLevel(new Level7()); diff --git a/spaceinvaders/GameProject/src/playground/LevelWithBox.java b/spaceinvaders/GameProject/src/playground/LevelWithBox.java new file mode 100644 index 0000000..71f5a5b --- /dev/null +++ b/spaceinvaders/GameProject/src/playground/LevelWithBox.java @@ -0,0 +1,20 @@ +package playground; + +import java.awt.Color; +import gameobjects.GameObject; +import gameobjects.RectObject; + + +public class LevelWithBox extends SpaceInvadersLevel { + + @Override + protected String getStartupMessage() { + return "Box-Level!"; + } + + @Override + public void prepareLevel(String id) { + super.prepareLevel(id); + addObject(); + } +}