Skip to content

Commit

Permalink
new characters assets, initial gameplay, initial menu and routing engine
Browse files Browse the repository at this point in the history
  • Loading branch information
adisoftbn committed Dec 28, 2017
1 parent 32b2032 commit 308496a
Show file tree
Hide file tree
Showing 62 changed files with 16,680 additions and 100 deletions.
6 changes: 6 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,10 @@ To get more help on the Angular CLI use `ng help` or go check out the [Angular C

## Assets copyright
Textures from [WildTextures](http://www.wildtextures.com)

Sample 3D objects from [BabylonJs Website](http://babylonjs.com)



Animated Female Mage made by [Clement Wu, Nikolaus & Botanic](https://opengameart.org/content/animated-female-mage)
Animated Diablous made by [Clement Wu, Nikolaus & Botanic](https://opengameart.org/content/animated-diablous)
12 changes: 12 additions & 0 deletions src/app/app-routing.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';

@NgModule({
imports: [
RouterModule.forRoot([
], {initialNavigation: true})
],
exports: [RouterModule]
})
export class AppRoutingModule { }

9 changes: 0 additions & 9 deletions src/app/app.component.css
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
html,
body {
overflow: hidden;
width: 100vw;
height: 100vh;
margin: 0;
padding: 0;
}

#renderCanvas {
position: absolute;
top: 0;
Expand Down
1 change: 1 addition & 0 deletions src/app/app.component.html
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
<canvas id="renderCanvas"></canvas>
<router-outlet></router-outlet>
71 changes: 49 additions & 22 deletions src/app/app.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,72 +3,99 @@ import { Component, AfterViewInit } from '@angular/core';
import { texturesUrl, charactersData, themesData } from './config';
import { GameRenderer } from './shared/engine';

import { EPlayerCharacterType } from './game/model';
import { EPlayerCharacterType, IBombermanGameRules, BombermanGameRules } from './game/model';
import {
IBombermanGraphicsOptions, BombermanVeryLowGraphicsOptions, BombermanLowGraphicsOptions,
BombermanMediumGraphicsOptions, BombermanHighGraphicsOptions
} from '../app/game/model/options';
import { GameBuilder, GameThemes } from './game';
} from './game/model/options';
import { GameBuilder, GameThemes, EGameBuilderEventType } from './game';

import { environment } from '../environments/environment';


import { gameMemoryStorage } from './shared/gameMemoryStorage';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
private _gameRenderer: GameRenderer;
private _gameBuilder: GameBuilder;
private _gameThemes: GameThemes;

private _graphicsOptions: IBombermanGraphicsOptions;
private _gameRules: IBombermanGameRules;

constructor() {
if (environment.graphicsOptions === 'low') {
this._graphicsOptions = new BombermanLowGraphicsOptions();
gameMemoryStorage.graphicsOptions = new BombermanLowGraphicsOptions();
} else if (environment.graphicsOptions === 'medium') {
this._graphicsOptions = new BombermanMediumGraphicsOptions();
gameMemoryStorage.graphicsOptions = new BombermanMediumGraphicsOptions();
} else if (environment.graphicsOptions === 'high') {
this._graphicsOptions = new BombermanHighGraphicsOptions();
gameMemoryStorage.graphicsOptions = new BombermanHighGraphicsOptions();
} else {
this._graphicsOptions = new BombermanVeryLowGraphicsOptions();
gameMemoryStorage.graphicsOptions = new BombermanVeryLowGraphicsOptions();
}
}

ngAfterViewInit() {
this._gameRenderer = new GameRenderer('renderCanvas', {
shadowEnabled: this._graphicsOptions.worldShadowEnabled,
shadowQuality: this._graphicsOptions.worldShadowQuality
gameMemoryStorage.gameRenderer = new GameRenderer('renderCanvas', {
shadowEnabled: gameMemoryStorage.graphicsOptions.worldShadowEnabled,
shadowQuality: gameMemoryStorage.graphicsOptions.worldShadowQuality
});
this._gameRenderer.getTextureGallery().initTextureObjects(texturesUrl);
this._gameRenderer.getCharacterGallery().initCharacterObjects(charactersData);
this._gameBuilder = new GameBuilder(this._gameRenderer, this._graphicsOptions);
gameMemoryStorage.gameRenderer.animate();
gameMemoryStorage.gameRenderer.createScene();

gameMemoryStorage.gameRenderer.getTextureGallery().initTextureObjects(texturesUrl);
gameMemoryStorage.gameRenderer.getCharacterGallery().initCharacterObjects(charactersData);



this._gameBuilder = new GameBuilder(gameMemoryStorage.gameRenderer, gameMemoryStorage.graphicsOptions,
(eventType: EGameBuilderEventType, data: any) => {
if (eventType === EGameBuilderEventType.currentPlayerKilled) {
alert('You died!');
}
}
);
this._gameThemes = new GameThemes();
this._gameThemes.initGameThemes(themesData);
this._gameRenderer.animate();
this._gameRenderer.createScene();

this._gameRules = new BombermanGameRules()




this._gameBuilder.buildBombermanGame(
[
{
name: 'Unknown player',
playerType: EPlayerCharacterType.current,
characterName: 'Unknown',
characterModel: 'rabbit'
characterModel: 'archer'
},
{
name: 'Unknown player',
playerType: EPlayerCharacterType.computerEasy,
characterName: 'Unknown',
characterModel: 'dude'
characterModel: 'diablous'
},
{
name: 'Unknown player',
playerType: EPlayerCharacterType.computerEasy,
characterName: 'Unknown',
characterModel: 'female-mage'
},
{
name: 'Unknown player',
playerType: EPlayerCharacterType.computerEasy,
characterName: 'Unknown',
characterModel: 'rabbit'
}
],
this._gameThemes.getThemeByName('theme1'),
{
width: 11,
height: 10
}
},
this._gameRules
);
// this._gameRenderer.getScene().debugLayer.show();
}
Expand Down
6 changes: 5 additions & 1 deletion src/app/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';

import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { MenuModule } from './menu/menu.module';

@NgModule({
declarations: [
Expand All @@ -12,7 +14,9 @@ import { AppComponent } from './app.component';
imports: [
BrowserModule,
FormsModule,
HttpModule
HttpModule,
AppRoutingModule,
MenuModule
],
providers: [],
bootstrap: [AppComponent]
Expand Down
88 changes: 78 additions & 10 deletions src/app/config/characters.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,90 @@
export const charactersData = [
{
name: 'rabbit',
modelPath: 'assets/models/Rabbit/',
modelFileName: 'Rabbit.babylon',
name: 'female-mage',
modelPath: 'assets/models/FemaleMage/',
modelFileName: 'FemaleMage.babylon',
modelFileType: 'babylon',
animations: {
idle: [130, 151],
walk: [161, 186],
run: [161, 186],
moveLeft: [161, 186], // missing
moveRight: [161, 186], // missing
die: [66, 111],
hitReceived: [112, 126],
attack: [1, 65]
},
transform: {
scale: [0.5, 0.5, 0.5],
position: [0, 0.45, 0],
rotate: [0, 180, 0]
}
},
{
name: 'diablous',
modelPath: 'assets/models/Diablous/',
modelFileName: 'Diablous.babylon',
modelFileType: 'babylon',
animations: {
stand: [0, 30],
run: [31, 54]
idle: [151, 172],
idle2: [177, 230],
walk: [263, 288],
run: [231, 248],
moveLeft: [263, 288], // missing
moveRight: [263, 288], // missing
die: [67, 112],
hitReceived: [121, 144],
attack: [1, 51]
},
transform: {
scale: [0.5, 0.5, 0.5],
position: [0, -0.2, 0],
rotate: [0, 180, 0]
}
},
{
name: 'dude',
modelPath: 'assets/models/Dude/',
modelFileName: 'Dude.babylon',
name: 'archer',
modelPath: 'assets/models/Archer/',
modelFileName: 'Archer.babylon',
modelFileType: 'babylon',
animations: {
idle: [104, 125],
walk: [151, 184],
run: [151, 184],
moveLeft: [151, 184], // missing
moveRight: [151, 184], // missing
die: [63, 91],
hitReceived: [92, 103],
attack: [15, 58]
},
transform: {
scale: [0.5, 0.5, 0.5],
position: [0, -0.2, 0],
rotate: [0, 180, 0]
}
},



{
name: 'rabbit',
modelPath: 'assets/models/Rabbit/',
modelFileName: 'Rabbit.babylon',
modelFileType: 'babylon',
animations: {
stand: [0, 30],
run: [31, 54]
idle: [0, 30],
walk: [31, 54],
run: [31, 54],
moveLeft: [31, 54], // missing
moveRight: [31, 54], // missing
die: [0, 30],
hitReceived: [0, 30],
attack: [0, 30]
},
transform: {
scale: [0.1, 0.1, 0.1],
position: [0, -5.2, 0],
rotate: [0, 0, 0]
}
}
];
Loading

0 comments on commit 308496a

Please sign in to comment.