├── .gitignore ├── LICENSE ├── README.md ├── TS GameEngine 01 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 02 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── engine.ts │ ├── gl.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 03 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── core │ └── gl │ │ ├── engine.ts │ │ ├── gl.ts │ │ └── shader.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 04 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── core │ └── gl │ │ ├── engine.ts │ │ ├── gl.ts │ │ └── shader.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 05 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── core │ └── gl │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ └── shader.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 06 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── core │ ├── gl │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ └── shader.ts │ ├── graphics │ │ └── sprite.ts │ └── math │ │ ├── matrix4x4.ts │ │ └── vector3.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 07~08 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ └── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ └── imageAssetLoader.ts │ ├── gl │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ └── shader.ts │ ├── graphics │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ └── vector3.ts │ └── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 09 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ └── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ └── imageAssetLoader.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ └── vector3.ts │ └── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 10 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ └── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ └── imageAssetLoader.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ └── simObject.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 11 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ └── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ └── imageAssetLoader.ts │ ├── components │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 13 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── components │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 14 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 15 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ └── rotationBehavior.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ └── textureManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 16 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ └── rotationBehavior.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 17~18 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ └── flap.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ └── rotationBehavior.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 19 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ └── flap.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ └── rotationBehavior.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 20 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ └── flap.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ └── rotationBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 20~21 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ └── flap.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ └── rotationBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 22~23 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ ├── dead.mp3 │ │ ├── flap.mp3 │ │ └── ting.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ ├── playerBehavior.ts │ │ └── rotationBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── mathExtensions.ts │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 24 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── sounds │ │ ├── dead.mp3 │ │ ├── flap.mp3 │ │ └── ting.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ └── jsonAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ ├── playerBehavior.ts │ │ ├── rotationBehavior.ts │ │ └── scrollBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── mathExtensions.ts │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 25 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── fonts │ │ ├── text.png │ │ └── text.txt │ ├── sounds │ │ ├── dead.mp3 │ │ ├── flap.mp3 │ │ └── ting.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ ├── jsonAssetLoader.ts │ │ └── testAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ ├── playerBehavior.ts │ │ ├── rotationBehavior.ts │ │ └── scrollBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── bitmapFont.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── mathExtensions.ts │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config ├── TS GameEngine 26 ├── TS GameEngine.sln └── TS GameEngine │ ├── Properties │ └── AssemblyInfo.cs │ ├── TS GameEngine.csproj │ ├── Web.Debug.config │ ├── Web.Release.config │ ├── Web.config │ ├── app.ts │ ├── assets │ ├── fonts │ │ ├── text.png │ │ └── text.txt │ ├── sounds │ │ ├── dead.mp3 │ │ ├── flap.mp3 │ │ └── ting.mp3 │ ├── textures │ │ ├── bg.png │ │ ├── duck.png │ │ ├── end.png │ │ ├── grass.png │ │ ├── middle.png │ │ ├── playbtn.png │ │ ├── restartbtn.png │ │ ├── score.png │ │ ├── title.png │ │ └── tutorial.png │ └── zones │ │ └── testZone.json │ ├── core │ ├── assets │ │ ├── IAsset.ts │ │ ├── IAssetLoader.ts │ │ ├── assetManager.ts │ │ ├── imageAssetLoader.ts │ │ ├── jsonAssetLoader.ts │ │ └── testAssetLoader.ts │ ├── audio │ │ └── audioManager.ts │ ├── behaviors │ │ ├── IBehavior.ts │ │ ├── IBehaviorBuilder.ts │ │ ├── IBehaviorData.ts │ │ ├── baseBehavior.ts │ │ ├── behaviorManager.ts │ │ ├── keyboardMovementBehavior.ts │ │ ├── playerBehavior.ts │ │ ├── rotationBehavior.ts │ │ └── scrollBehavior.ts │ ├── collision │ │ └── collisionManager.ts │ ├── components │ │ ├── ComponentManager.ts │ │ ├── IComponent.ts │ │ ├── IComponentBuilder.ts │ │ ├── IComponentData.ts │ │ ├── animatedSpriteComponent.ts │ │ ├── baseComponent.ts │ │ ├── bitmapTextComponent.ts │ │ ├── collisionComponent.ts │ │ └── spriteComponent.ts │ ├── gl │ │ ├── color.ts │ │ ├── engine.ts │ │ ├── gl.ts │ │ ├── glBuffer.ts │ │ ├── material.ts │ │ ├── shader.ts │ │ └── shaders │ │ │ └── baseShader.ts │ ├── graphics │ │ ├── animatedSprite.ts │ │ ├── bitmapFont.ts │ │ ├── bitmapFontManager.ts │ │ ├── bitmapText.ts │ │ ├── color.ts │ │ ├── material.ts │ │ ├── materialManager.ts │ │ ├── shapes2D │ │ │ ├── IShape2D.ts │ │ │ ├── circle2D.ts │ │ │ └── rectangle2d.ts │ │ ├── sprite.ts │ │ ├── texture.ts │ │ ├── textureManager.ts │ │ └── vertex.ts │ ├── input │ │ └── inputManager.ts │ ├── math │ │ ├── mathExtensions.ts │ │ ├── matrix4x4.ts │ │ ├── transform.ts │ │ ├── vector2.ts │ │ └── vector3.ts │ ├── message │ │ ├── IMessageHandler.ts │ │ ├── message.ts │ │ ├── messageBus.ts │ │ └── messageSubscriptionNode.ts │ └── world │ │ ├── scene.ts │ │ ├── simObject.ts │ │ ├── testZone.ts │ │ ├── zone.ts │ │ └── zoneManager.ts │ ├── index.html │ └── packages.config └── TS GameEngine 27 ├── TS GameEngine.sln └── TS GameEngine ├── Properties └── AssemblyInfo.cs ├── TS GameEngine.csproj ├── Web.Debug.config ├── Web.Release.config ├── Web.config ├── app.ts ├── assets ├── fonts │ ├── text.png │ └── text.txt ├── sounds │ ├── dead.mp3 │ ├── flap.mp3 │ └── ting.mp3 ├── textures │ ├── bg.png │ ├── duck.png │ ├── end.png │ ├── grass.png │ ├── middle.png │ ├── playbtn.png │ ├── restartbtn.png │ ├── score.png │ ├── title.png │ └── tutorial.png └── zones │ └── testZone.json ├── core ├── assets │ ├── IAsset.ts │ ├── IAssetLoader.ts │ ├── assetManager.ts │ ├── imageAssetLoader.ts │ ├── jsonAssetLoader.ts │ └── testAssetLoader.ts ├── audio │ └── audioManager.ts ├── behaviors │ ├── IBehavior.ts │ ├── IBehaviorBuilder.ts │ ├── IBehaviorData.ts │ ├── baseBehavior.ts │ ├── behaviorManager.ts │ ├── keyboardMovementBehavior.ts │ ├── mouseClickBehavior.ts │ ├── playerBehavior.ts │ ├── rotationBehavior.ts │ ├── scrollBehavior.ts │ └── visibilityOnMessageBehavior.ts ├── collision │ └── collisionManager.ts ├── components │ ├── ComponentManager.ts │ ├── IComponent.ts │ ├── IComponentBuilder.ts │ ├── IComponentData.ts │ ├── animatedSpriteComponent.ts │ ├── baseComponent.ts │ ├── bitmapTextComponent.ts │ ├── collisionComponent.ts │ └── spriteComponent.ts ├── gl │ ├── color.ts │ ├── engine.ts │ ├── gl.ts │ ├── glBuffer.ts │ ├── material.ts │ ├── shader.ts │ └── shaders │ │ └── baseShader.ts ├── graphics │ ├── animatedSprite.ts │ ├── bitmapFont.ts │ ├── bitmapFontManager.ts │ ├── bitmapText.ts │ ├── color.ts │ ├── material.ts │ ├── materialManager.ts │ ├── shapes2D │ │ ├── IShape2D.ts │ │ ├── circle2D.ts │ │ └── rectangle2d.ts │ ├── sprite.ts │ ├── texture.ts │ ├── textureManager.ts │ └── vertex.ts ├── input │ └── inputManager.ts ├── math │ ├── mathExtensions.ts │ ├── matrix4x4.ts │ ├── transform.ts │ ├── vector2.ts │ └── vector3.ts ├── message │ ├── IMessageHandler.ts │ ├── message.ts │ ├── messageBus.ts │ └── messageSubscriptionNode.ts └── world │ ├── scene.ts │ ├── simObject.ts │ ├── testZone.ts │ ├── zone.ts │ └── zoneManager.ts ├── index.html └── packages.config /README.md: -------------------------------------------------------------------------------- 1 | # TypeScript-GameEngine 2 | In this series I step through the process of making a simple game from the ground up using TypeScript and WebGL. 3 | 4 | Fork : https://www.youtube.com/watch?v=Hi3vyJQbULk&list=PLv8Ddw9K0JPiTHLMQw31Yh4qyTAcHRnJx 5 | -------------------------------------------------------------------------------- /TS GameEngine 01/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | export class Engine { 3 | public constructor() { 4 | console.log("Hello World"); 5 | } 6 | 7 | private _count: number = 0; 8 | 9 | public start(): void { 10 | this.loop(); 11 | } 12 | 13 | private loop(): void { 14 | this._count++; 15 | document.title = this._count.toString(); 16 | 17 | requestAnimationFrame(this.loop.bind(this)); 18 | } 19 | } 20 | } 21 | 22 | window.onload = function () { 23 | var e = new TSE.Engine(); 24 | e.start(); 25 | document.body.innerHTML += "Foo"; 26 | } -------------------------------------------------------------------------------- /TS GameEngine 01/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 8 | 9 | Some Text. 10 | 11 | -------------------------------------------------------------------------------- /TS GameEngine 01/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 02/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 02/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 02/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 03/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 03/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 03/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 04/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 04/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 04/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 05/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 05/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 05/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 06/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 06/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 06/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 07~08/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 07~08/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 09/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 09/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 10/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 10/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 11/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent/* implements IComponent*/ { 5 | 6 | protected _owner: SimObject; 7 | //protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(name:string/*data: IComponentData*/) { 13 | //this._data = data; 14 | this.name = name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/components/spriteComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | export class SpriteComponent extends BaseComponent { 3 | 4 | private _sprite: Sprite; 5 | 6 | 7 | public constructor(name :string, materialName:string) { 8 | super(name); 9 | this._sprite = new Sprite(name, materialName); 10 | } 11 | 12 | public load(): void { 13 | this._sprite.load(); 14 | } 15 | 16 | 17 | public render(shader: Shader): void { 18 | this._sprite.draw(shader, this.owner.worldMatrix); 19 | 20 | super.render(shader); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 11/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 13/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/assets/zones/testZone.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TestZone", 3 | "description": "A simple test zone for... testing.", 4 | "id": 0, 5 | "objects": [ 6 | { 7 | "name": "parentObject", 8 | "transform": { 9 | "position": { 10 | "x": 300, 11 | "y": 300 12 | } 13 | }, 14 | "children": [ 15 | { 16 | "name": "testObject", 17 | "transform": { 18 | "position": { 19 | "x": 120, 20 | "y": 120 21 | } 22 | } 23 | } 24 | ] 25 | } 26 | ] 27 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/core/components/spriteComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | export class SpriteComponent extends BaseComponent { 3 | 4 | private _sprite: Sprite; 5 | 6 | 7 | public constructor(name :string, materialName:string) { 8 | super(name); 9 | this._sprite = new Sprite(name, materialName); 10 | } 11 | 12 | public load(): void { 13 | this._sprite.load(); 14 | } 15 | 16 | 17 | public render(shader: Shader): void { 18 | this._sprite.draw(shader, this.owner.worldMatrix); 19 | 20 | super.render(shader); 21 | } 22 | } 23 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 13/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 14/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 14/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 15/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 15/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 16/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 16/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 17~18/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 17~18/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 19/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | } 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 19/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | } 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 20/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 20~21/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | } 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | update(time: number): void; 13 | 14 | render(shader: Shader): void; 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 20~21/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(320, 480); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/sounds/dead.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/sounds/dead.mp3 -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/sounds/ting.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/sounds/ting.mp3 -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 22~23/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | updateReady(): void; 13 | 14 | update(time: number): void; 15 | 16 | render(shader: Shader): void; 17 | } 18 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/math/mathExtensions.ts: -------------------------------------------------------------------------------- 1 | interface Math { 2 | clamp(value: number, min: number, max: number): number; 3 | degToRad(degrees: number): number; 4 | radToDeg(radians: number): number; 5 | } 6 | 7 | (Math as any).clamp = (value: number, min: number, max: number): number => { 8 | if (value < min) { 9 | return min; 10 | } 11 | if (value > max) { 12 | return max; 13 | } 14 | return value; 15 | } 16 | 17 | (Math as any).degToRad = (degrees: number): number => { 18 | return degrees * Math.PI / 180.0; 19 | } 20 | 21 | (Math as any).radToDeg = (radians: number): number => { 22 | return radians * 180.0 / Math.PI; 23 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 22~23/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(320, 480); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/sounds/dead.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/sounds/dead.mp3 -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/sounds/ting.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/sounds/ting.mp3 -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 24/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | updateReady(): void; 13 | 14 | update(time: number): void; 15 | 16 | render(shader: Shader): void; 17 | } 18 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/math/mathExtensions.ts: -------------------------------------------------------------------------------- 1 | interface Math { 2 | clamp(value: number, min: number, max: number): number; 3 | degToRad(degrees: number): number; 4 | radToDeg(radians: number): number; 5 | } 6 | 7 | (Math as any).clamp = (value: number, min: number, max: number): number => { 8 | if (value < min) { 9 | return min; 10 | } 11 | if (value > max) { 12 | return max; 13 | } 14 | return value; 15 | } 16 | 17 | (Math as any).degToRad = (degrees: number): number => { 18 | return degrees * Math.PI / 180.0; 19 | } 20 | 21 | (Math as any).radToDeg = (radians: number): number => { 22 | return radians * 180.0 / Math.PI; 23 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 24/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(320, 480); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/fonts/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/fonts/text.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/sounds/dead.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/sounds/dead.mp3 -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/sounds/ting.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/sounds/ting.mp3 -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 25/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | updateReady(): void; 13 | 14 | update(time: number): void; 15 | 16 | render(shader: Shader): void; 17 | } 18 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/math/mathExtensions.ts: -------------------------------------------------------------------------------- 1 | interface Math { 2 | clamp(value: number, min: number, max: number): number; 3 | degToRad(degrees: number): number; 4 | radToDeg(radians: number): number; 5 | } 6 | 7 | (Math as any).clamp = (value: number, min: number, max: number): number => { 8 | if (value < min) { 9 | return min; 10 | } 11 | if (value > max) { 12 | return max; 13 | } 14 | return value; 15 | } 16 | 17 | (Math as any).degToRad = (degrees: number): number => { 18 | return degrees * Math.PI / 180.0; 19 | } 20 | 21 | (Math as any).radToDeg = (radians: number): number => { 22 | return radians * 180.0 / Math.PI; 23 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 25/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // 应用程序的主要入口点。 5 | window.onload = function () { 6 | engine = new TSE.Engine(320, 480); 7 | engine.start(); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/fonts/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/fonts/text.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/sounds/dead.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/sounds/dead.mp3 -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/sounds/ting.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/sounds/ting.mp3 -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 26/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | updateReady(): void; 13 | 14 | update(time: number): void; 15 | 16 | render(shader: Shader): void; 17 | } 18 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/math/mathExtensions.ts: -------------------------------------------------------------------------------- 1 | interface Math { 2 | clamp(value: number, min: number, max: number): number; 3 | degToRad(degrees: number): number; 4 | radToDeg(radians: number): number; 5 | } 6 | 7 | (Math as any).clamp = (value: number, min: number, max: number): number => { 8 | if (value < min) { 9 | return min; 10 | } 11 | if (value > max) { 12 | return max; 13 | } 14 | return value; 15 | } 16 | 17 | (Math as any).degToRad = (degrees: number): number => { 18 | return degrees * Math.PI / 180.0; 19 | } 20 | 21 | (Math as any).radToDeg = (radians: number): number => { 22 | return radians * 180.0 / Math.PI; 23 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /TS GameEngine 26/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/app.ts: -------------------------------------------------------------------------------- 1 |  2 | var engine:TSE.Engine; 3 | 4 | // The main entry point to the application. 5 | window.onload = function () { 6 | engine = new TSE.Engine(320, 480); 7 | engine.start("viewport"); 8 | } 9 | 10 | window.onresize = function () { 11 | engine.resize(); 12 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/fonts/text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/fonts/text.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/sounds/dead.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/sounds/dead.mp3 -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/sounds/flap.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/sounds/flap.mp3 -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/sounds/ting.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/sounds/ting.mp3 -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/bg.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/duck.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/end.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/grass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/grass.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/middle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/middle.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/playbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/playbtn.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/restartbtn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/restartbtn.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/score.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/score.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/title.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/title.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/assets/textures/tutorial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SunGuangdong/TypeScript-GameEngine/3ef1fe57eda046c4dd0b2fca992d40674b58e78f/TS GameEngine 27/TS GameEngine/assets/textures/tutorial.png -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/assets/IAsset.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset */ 4 | export interface IAsset { 5 | 6 | /** The name of this asset. */ 7 | readonly name: string; 8 | 9 | /** The data of this asset. */ 10 | readonly data: any; 11 | } 12 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/assets/IAssetLoader.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | /** Represents an asset loader. */ 4 | export interface IAssetLoader { 5 | 6 | /** The extensions supported by this asset loader. */ 7 | readonly supportedExtensions: string[]; 8 | 9 | /** 10 | * Loads an asset with the given name. 11 | * @param assetName The name of the asset to be loaded. 12 | */ 13 | loadAsset(assetName: string): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/behaviors/IBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehavior { 5 | name: string; 6 | 7 | setOwner( owner: SimObject ): void; 8 | 9 | updateReady(): void; 10 | 11 | update( time: number ): void; 12 | 13 | apply( userData: any ): void; 14 | } 15 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/behaviors/IBehaviorBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IBehaviorBuilder { 5 | readonly type: string; 6 | buildFromJson(json: any): IBehavior; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/behaviors/IBehaviorData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IBehaviorData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/behaviors/baseBehavior.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseBehavior implements IBehavior { 5 | public name: string; 6 | 7 | protected _data: IBehaviorData; 8 | protected _owner: SimObject; 9 | 10 | public constructor(data: IBehaviorData) { 11 | this._data = data; 12 | this.name = this._data.name; 13 | } 14 | 15 | public setOwner(owner: SimObject): void { 16 | this._owner = owner; 17 | } 18 | 19 | public updateReady(): void { 20 | } 21 | 22 | public update(time: number): void { 23 | } 24 | 25 | public apply(userData: any): void { 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/behaviors/behaviorManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class BehaviorManager { 5 | private static _registeredBuilders: { [type: string]: IBehaviorBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IBehaviorBuilder): void { 9 | BehaviorManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractBehavior(json: any): IBehavior { 13 | if (json.type !== undefined) { 14 | if (BehaviorManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return BehaviorManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Behavior manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/components/ComponentManager.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export class ComponentManager { 4 | 5 | private static _registeredBuilders: { [type: string]: IComponentBuilder } = {}; 6 | 7 | 8 | public static registerBuilder(builder: IComponentBuilder): void { 9 | ComponentManager._registeredBuilders[builder.type] = builder; 10 | } 11 | 12 | public static extractComponent(json: any): IComponent { 13 | if (json.type !== undefined) { 14 | if (ComponentManager._registeredBuilders[String(json.type)] !== undefined) { 15 | return ComponentManager._registeredBuilders[String(json.type)].buildFromJson(json); 16 | } 17 | 18 | throw new Error("Component manager error - type is missing or builder is not registered for this type."); 19 | } 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/components/IComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponent { 4 | 5 | name: string; 6 | 7 | readonly owner: SimObject; 8 | setOwner(owner: SimObject): void; 9 | 10 | load(): void; 11 | 12 | updateReady(): void; 13 | 14 | update(time: number): void; 15 | 16 | render(shader: Shader): void; 17 | } 18 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/components/IComponentBuilder.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentBuilder { 4 | 5 | readonly type: string; 6 | 7 | buildFromJson(json: any): IComponent; 8 | } 9 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/components/IComponentData.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IComponentData { 4 | name: string; 5 | 6 | setFromJson(json: any): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/components/baseComponent.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export abstract class BaseComponent implements IComponent { 5 | 6 | protected _owner: SimObject; 7 | protected _data: IComponentData; 8 | 9 | public name: string; 10 | 11 | 12 | public constructor(data: IComponentData) { 13 | this._data = data; 14 | this.name = data.name; 15 | } 16 | 17 | public get owner(): SimObject { 18 | return this._owner; 19 | } 20 | 21 | public setOwner(owner: SimObject): void { 22 | this._owner = owner; 23 | } 24 | 25 | public load(): void { 26 | } 27 | 28 | public updateReady(): void { 29 | } 30 | 31 | public update(time: number): void { 32 | } 33 | 34 | public render(shader: Shader): void { 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/graphics/shapes2D/IShape2D.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | export interface IShape2D { 4 | 5 | position: Vector2; 6 | 7 | origin: Vector2; 8 | 9 | readonly offset: Vector2; 10 | 11 | setFromJson(json: any): void; 12 | 13 | intersects(other: IShape2D): boolean; 14 | 15 | pointInShape(point: Vector2): boolean; 16 | } 17 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/math/mathExtensions.ts: -------------------------------------------------------------------------------- 1 | interface Math { 2 | clamp(value: number, min: number, max: number): number; 3 | degToRad(degrees: number): number; 4 | radToDeg(radians: number): number; 5 | } 6 | 7 | (Math as any).clamp = (value: number, min: number, max: number): number => { 8 | if (value < min) { 9 | return min; 10 | } 11 | if (value > max) { 12 | return max; 13 | } 14 | return value; 15 | } 16 | 17 | (Math as any).degToRad = (degrees: number): number => { 18 | return degrees * Math.PI / 180.0; 19 | } 20 | 21 | (Math as any).radToDeg = (radians: number): number => { 22 | return radians * 180.0 / Math.PI; 23 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/message/IMessageHandler.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export interface IMessageHandler { 5 | 6 | onMessage(message: Message): void; 7 | } 8 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/core/message/messageSubscriptionNode.ts: -------------------------------------------------------------------------------- 1 | namespace TSE { 2 | 3 | 4 | export class MessageSubscriptionNode { 5 | 6 | public message: Message; 7 | 8 | public handler: IMessageHandler; 9 | 10 | 11 | public constructor(message: Message, handler: IMessageHandler) { 12 | this.message = message; 13 | this.handler = handler; 14 | } 15 | } 16 | } -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/index.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | TypeScript Tutorial 6 | 7 | 26 | 27 | 28 |
29 | 30 |
31 | 32 | -------------------------------------------------------------------------------- /TS GameEngine 27/TS GameEngine/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | --------------------------------------------------------------------------------