Skip to content

Commit

Permalink
Upgrade to Flame 1.22.0
Browse files Browse the repository at this point in the history
  • Loading branch information
ufrshubham committed Dec 23, 2024
1 parent f92eaec commit ba9b016
Show file tree
Hide file tree
Showing 17 changed files with 88 additions and 89 deletions.
29 changes: 22 additions & 7 deletions .metadata
Original file line number Diff line number Diff line change
@@ -1,23 +1,38 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled.
# This file should be version controlled and should not be manually edited.

version:
revision: 8c1149878bbb8f062aecfab4d825e5b87bdb4487
channel: beta
revision: "17025dd88227cd9532c33fa78f5250d548d87e9a"
channel: "stable"

project_type: app

# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 8c1149878bbb8f062aecfab4d825e5b87bdb4487
base_revision: 8c1149878bbb8f062aecfab4d825e5b87bdb4487
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: android
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: ios
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: linux
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: macos
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: web
create_revision: 8c1149878bbb8f062aecfab4d825e5b87bdb4487
base_revision: 8c1149878bbb8f062aecfab4d825e5b87bdb4487
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
- platform: windows
create_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a
base_revision: 17025dd88227cd9532c33fa78f5250d548d87e9a

# User provided section

Expand Down
1 change: 0 additions & 1 deletion lib/game/audio_player_component.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import 'package:flame/components.dart';
import 'package:flame/experimental.dart';
import 'package:flame_audio/flame_audio.dart';
import 'package:provider/provider.dart';

Expand Down
8 changes: 4 additions & 4 deletions lib/game/bullet.dart
Original file line number Diff line number Diff line change
Expand Up @@ -16,11 +16,11 @@ class Bullet extends SpriteComponent with CollisionCallbacks {
final int level;

Bullet({
required Sprite? sprite,
required Vector2? position,
required Vector2? size,
required super.sprite,
required super.position,
required super.size,
required this.level,
}) : super(sprite: sprite, position: position, size: size);
});

@override
void onMount() {
Expand Down
9 changes: 4 additions & 5 deletions lib/game/enemy.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'dart:math';

import 'package:flame/collisions.dart';
import 'package:flame/experimental.dart';
import 'package:flame/particles.dart';
import 'package:flame/components.dart';
import 'package:flutter/material.dart';
Expand Down Expand Up @@ -60,11 +59,11 @@ class Enemy extends SpriteComponent
}

Enemy({
required Sprite? sprite,
required super.sprite,
required this.enemyData,
required Vector2? position,
required Vector2? size,
}) : super(sprite: sprite, position: position, size: size) {
required super.position,
required super.size,
}) {
// Rotates the enemy component by 180 degrees. This is needed because
// all the sprites initially face the same direct, but we want enemies to be
// moving in opposite direction.
Expand Down
1 change: 0 additions & 1 deletion lib/game/enemy_manager.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'dart:math';

import 'package:flame/experimental.dart';
import 'package:flame/sprite.dart';
import 'package:flame/components.dart';
import 'package:provider/provider.dart';
Expand Down
29 changes: 13 additions & 16 deletions lib/game/game.dart
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,6 @@ import 'audio_player_component.dart';
// This class is responsible for initializing and running the game-loop.
class SpacescapeGame extends FlameGame
with HasCollisionDetection, HasKeyboardHandlerComponents {
// The whole game world.
final World world = World();

late CameraComponent primaryCamera;

// Stores a reference to player component.
late Player _player;

Expand Down Expand Up @@ -93,18 +88,17 @@ class SpacescapeGame extends FlameGame
// size: 100,
background: CircleComponent(
radius: 60,
paint: Paint()..color = Colors.white.withOpacity(0.5),
paint: Paint()..color = Colors.white.withValues(alpha: 0.5),
),
knob: CircleComponent(radius: 30),
);

primaryCamera = CameraComponent.withFixedResolution(
camera = CameraComponent.withFixedResolution(
world: world,
width: fixedResolution.x,
height: fixedResolution.y,
hudComponents: [joystick],
)..viewfinder.position = fixedResolution / 2;
await add(primaryCamera);
);
camera.viewfinder.position = fixedResolution / 2;

_audioPlayerComponent = AudioPlayerComponent();
final stars = await ParallaxComponent.load(
Expand Down Expand Up @@ -139,7 +133,7 @@ class SpacescapeGame extends FlameGame
final button = ButtonComponent(
button: CircleComponent(
radius: 60,
paint: Paint()..color = Colors.white.withOpacity(0.5),
paint: Paint()..color = Colors.white.withValues(alpha: 0.5),
),
anchor: Anchor.bottomRight,
position: Vector2(fixedResolution.x - 30, fixedResolution.y - 30),
Expand Down Expand Up @@ -186,14 +180,18 @@ class SpacescapeGame extends FlameGame
// Makes the game use a fixed resolution irrespective of the windows size.
await world.addAll([
_audioPlayerComponent,
stars,
_player,
_enemyManager,
_powerUpManager,
]);

camera.backdrop.add(stars);
camera.viewport.addAll([
joystick,
button,
healthBar,
_playerScore,
_playerHealth,
healthBar,
]);

// Set this to true so that we do not initilize
Expand All @@ -209,8 +207,7 @@ class SpacescapeGame extends FlameGame
if (buildContext != null) {
// Get the PlayerData from current build context without registering a listener.
final playerData = Provider.of<PlayerData>(buildContext!, listen: false);
// Update the current spaceship type of player.
_player.setSpaceshipType(playerData.spaceshipType);
_player.setPlayerData(playerData);
}
_audioPlayerComponent.playBgm('9. Space Invaders.wav');
super.onAttach();
Expand Down Expand Up @@ -269,7 +266,7 @@ class SpacescapeGame extends FlameGame
_commandList.addAll(_addLaterCommandList);
_addLaterCommandList.clear();

if (_player.isMounted) {
if (isAttached && _player.isReady) {
// Update score and health components with latest values.
_playerScore.text = 'Score: ${_player.score}';
_playerHealth.text = 'Health: ${_player.health}%';
Expand Down
42 changes: 21 additions & 21 deletions lib/game/player.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,11 @@ import 'dart:math';

import 'package:flame/collisions.dart';
// import 'package:flame/effects.dart';
import 'package:flame/experimental.dart';
import 'package:flame/particles.dart';
import 'package:flame/components.dart';
// import 'package:flame_noise/flame_noise.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:provider/provider.dart';

import '../models/player_data.dart';
import '../models/spaceship_details.dart';
Expand All @@ -35,10 +33,9 @@ class Player extends SpriteComponent
// Type of current spaceship.
SpaceshipType spaceshipType;

// A reference to PlayerData so that
// we can modify money.
late PlayerData _playerData;
int get score => _playerData.currentScore;
PlayerData? _playerData;
int get score => _playerData!.currentScore;
bool get isReady => isMounted && _playerData != null;

// If true, player will shoot 3 bullets at a time.
bool _shootMultipleBullets = false;
Expand All @@ -59,11 +56,10 @@ class Player extends SpriteComponent
Player({
required this.joystick,
required this.spaceshipType,
Sprite? sprite,
Vector2? position,
Vector2? size,
}) : _spaceship = Spaceship.getSpaceshipByType(spaceshipType),
super(sprite: sprite, position: position, size: size) {
super.sprite,
super.position,
super.size,
}) : _spaceship = Spaceship.getSpaceshipByType(spaceshipType) {
// Sets power up timer to 4 seconds. After 4 seconds,
// multiple bullet will get deactivated.
_powerUpTimer = Timer(4, onTick: () {
Expand All @@ -84,8 +80,6 @@ class Player extends SpriteComponent
anchor: Anchor.center,
);
add(shape);

_playerData = Provider.of<PlayerData>(game.buildContext!, listen: false);
}

@override
Expand Down Expand Up @@ -120,15 +114,15 @@ class Player extends SpriteComponent
};

@override
bool onKeyEvent(RawKeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
bool onKeyEvent(KeyEvent event, Set<LogicalKeyboardKey> keysPressed) {
// Set this to zero first - if the user releases all keys pressed, then
// the set will be empty and our vector non-zero.
keyboardDelta.setZero();

if (!_keysWatched.contains(event.logicalKey)) return true;

if (event is RawKeyDownEvent &&
!event.repeat &&
if (event is KeyDownEvent &&
event is! KeyRepeatEvent &&
event.logicalKey == LogicalKeyboardKey.space) {
// pew pew!
joystickAction();
Expand Down Expand Up @@ -196,6 +190,12 @@ class Player extends SpriteComponent
game.world.add(particleComponent);
}

void setPlayerData(PlayerData playerData) {
_playerData = playerData;
// Update the current spaceship type of player.
_setSpaceshipType(playerData.spaceshipType);
}

void joystickAction() {
Bullet bullet = Bullet(
sprite: game.spriteSheet.getSpriteById(28),
Expand Down Expand Up @@ -235,11 +235,11 @@ class Player extends SpriteComponent
// Adds given points to player score
/// and also add it to [PlayerData.money].
void addToScore(int points) {
_playerData.currentScore += points;
_playerData.money += points;
_playerData!.currentScore += points;
_playerData!.money += points;

// Saves player data to disk.
_playerData.save();
_playerData!.save();
}

// Increases health by give amount.
Expand All @@ -254,15 +254,15 @@ class Player extends SpriteComponent
// Resets player score, health and position. Should be called
// while restarting and exiting the game.
void reset() {
_playerData.currentScore = 0;
_playerData!.currentScore = 0;
_health = 100;
position = game.fixedResolution / 2;
}

// Changes the current spaceship type with given spaceship type.
// This method also takes care of updating the internal spaceship details
// as well as the spaceship sprite.
void setSpaceshipType(SpaceshipType spaceshipType) {
void _setSpaceshipType(SpaceshipType spaceshipType) {
spaceshipType = spaceshipType;
_spaceship = Spaceship.getSpaceshipByType(spaceshipType);
sprite = game.spriteSheet.getSpriteById(_spaceship.spriteId);
Expand Down
1 change: 0 additions & 1 deletion lib/game/power_up_manager.dart
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import 'dart:math';

import 'package:flame/components.dart';
import 'package:flame/experimental.dart';

import 'game.dart';
import 'power_ups.dart';
Expand Down
21 changes: 8 additions & 13 deletions lib/game/power_ups.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:flame/collisions.dart';
import 'package:flame/components.dart';
import 'package:flame/experimental.dart';

import 'game.dart';
import 'enemy.dart';
Expand All @@ -27,10 +26,10 @@ abstract class PowerUp extends SpriteComponent
void onActivated();

PowerUp({
Vector2? position,
Vector2? size,
Sprite? sprite,
}) : super(position: position, size: size, sprite: sprite) {
super.position,
super.size,
super.sprite,
}) {
// Power ups will be displayed only for 3 seconds
// before getting destroyed.
_timer = Timer(3, onTick: removeFromParent);
Expand Down Expand Up @@ -80,8 +79,7 @@ abstract class PowerUp extends SpriteComponent

// This power up nukes all the enemies.
class Nuke extends PowerUp {
Nuke({Vector2? position, Vector2? size})
: super(position: position, size: size);
Nuke({super.position, super.size});

@override
Sprite getSprite() {
Expand All @@ -100,8 +98,7 @@ class Nuke extends PowerUp {

// This power up increases player health by 10.
class Health extends PowerUp {
Health({Vector2? position, Vector2? size})
: super(position: position, size: size);
Health({super.position, super.size});

@override
Sprite getSprite() {
Expand All @@ -120,8 +117,7 @@ class Health extends PowerUp {

// This power up freezes all enemies for some time.
class Freeze extends PowerUp {
Freeze({Vector2? position, Vector2? size})
: super(position: position, size: size);
Freeze({super.position, super.size});

@override
Sprite getSprite() {
Expand Down Expand Up @@ -152,8 +148,7 @@ class Freeze extends PowerUp {

// This power up activate multi-fire for some time.
class MultiFire extends PowerUp {
MultiFire({Vector2? position, Vector2? size})
: super(position: position, size: size);
MultiFire({super.position, super.size});

@override
Sprite getSprite() {
Expand Down
10 changes: 3 additions & 7 deletions lib/screens/game_play.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,10 @@ import '../game/game.dart';
import '../widgets/overlays/pause_button.dart';
import '../widgets/overlays/pause_menu.dart';

// Creating this as a file private object so as to
// avoid unwanted rebuilds of the whole game object.
SpacescapeGame _spacescapeGame = SpacescapeGame();

// This class represents the actual game screen
// where all the action happens.
class GamePlay extends StatelessWidget {
const GamePlay({Key? key}) : super(key: key);
const GamePlay({super.key});

@override
Widget build(BuildContext context) {
Expand All @@ -25,8 +21,8 @@ class GamePlay extends StatelessWidget {
canPop: false,
// GameWidget is useful to inject the underlying
// widget of any class extending from Flame's Game class.
child: GameWidget(
game: _spacescapeGame,
child: GameWidget<SpacescapeGame>.controlled(
gameFactory: SpacescapeGame.new,
// Initially only pause button overlay will be visible.
initialActiveOverlays: const [PauseButton.id],
overlayBuilderMap: {
Expand Down
Loading

0 comments on commit ba9b016

Please # to comment.