59 lines
2.0 KiB
Dart
59 lines
2.0 KiB
Dart
import 'package:firo_runner/MovingObject.dart';
|
|
import 'package:firo_runner/main.dart';
|
|
import 'package:flame/components.dart';
|
|
import 'package:flame/flame.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class CircuitBackground extends MovingObject {
|
|
late var background;
|
|
late Sprite background1;
|
|
late Sprite background2;
|
|
Vector2 background1Size = Vector2(0, 0);
|
|
Vector2 background2Size = Vector2(0, 0);
|
|
Vector2 background1Position = Vector2(0, 0);
|
|
Vector2 background2Position = Vector2(0, 0);
|
|
|
|
CircuitBackground(MyGame gameRef) : super(gameRef);
|
|
|
|
Future load() async {
|
|
background = await Flame.images.load("bg.png");
|
|
background1 = Sprite(background);
|
|
background2 = Sprite(background);
|
|
setUp();
|
|
}
|
|
|
|
void setUp() {
|
|
background1Position = Vector2(0, 0);
|
|
background1Size = Vector2(
|
|
gameRef.size.y * (background!.width / background!.height),
|
|
gameRef.size.y);
|
|
background2Position =
|
|
Vector2(background1Position.x + background1Size.x - 1, 0);
|
|
background2Size = Vector2(
|
|
gameRef.size.y * (background!.width / background!.height),
|
|
gameRef.size.y);
|
|
}
|
|
|
|
@override
|
|
void update(double dt) {
|
|
if (background1Position.x + background1Size.x < 0) {
|
|
double newPosition = background2Position.x + background2Size.x;
|
|
background1Position = Vector2(newPosition - 1, 0);
|
|
} else if (background2Position.x + background2Size.x < 0) {
|
|
double newPosition = background1Position.x + background1Size.x;
|
|
background2Position = Vector2(newPosition - 1, 0);
|
|
}
|
|
|
|
double velocity = gameRef.gameState.getVelocity() / 10.0;
|
|
background1Position = background1Position - Vector2(velocity * dt, 0);
|
|
background2Position = background2Position - Vector2(velocity * dt, 0);
|
|
}
|
|
|
|
void render(Canvas canvas) {
|
|
background1.render(canvas,
|
|
size: background1Size, position: background1Position);
|
|
background2.render(canvas,
|
|
size: background2Size, position: background2Position);
|
|
}
|
|
}
|