From f340230cd70cb5989a7c9e28f797c9a10e7cda95 Mon Sep 17 00:00:00 2001 From: Erick Zanardo Date: Wed, 10 Jul 2019 20:13:44 -0300 Subject: [PATCH] Adding example for spritesheet --- doc/examples/spritesheet/.gitignore | 70 ++++++++++++++++++ doc/examples/spritesheet/.metadata | 10 +++ doc/examples/spritesheet/README.md | 5 ++ .../spritesheet/assets/images/spritesheet.png | Bin 0 -> 2159 bytes doc/examples/spritesheet/lib/main.dart | 52 +++++++++++++ doc/examples/spritesheet/pubspec.yaml | 21 ++++++ 6 files changed, 158 insertions(+) create mode 100644 doc/examples/spritesheet/.gitignore create mode 100644 doc/examples/spritesheet/.metadata create mode 100644 doc/examples/spritesheet/README.md create mode 100644 doc/examples/spritesheet/assets/images/spritesheet.png create mode 100644 doc/examples/spritesheet/lib/main.dart create mode 100644 doc/examples/spritesheet/pubspec.yaml diff --git a/doc/examples/spritesheet/.gitignore b/doc/examples/spritesheet/.gitignore new file mode 100644 index 000000000..07488ba61 --- /dev/null +++ b/doc/examples/spritesheet/.gitignore @@ -0,0 +1,70 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# Visual Studio Code related +.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.packages +.pub-cache/ +.pub/ +/build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 +!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages diff --git a/doc/examples/spritesheet/.metadata b/doc/examples/spritesheet/.metadata new file mode 100644 index 000000000..6a633e088 --- /dev/null +++ b/doc/examples/spritesheet/.metadata @@ -0,0 +1,10 @@ +# 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 and should not be manually edited. + +version: + revision: 7fc14a55af64462763d28abfb4e610086c6e0f39 + channel: dev + +project_type: app diff --git a/doc/examples/spritesheet/README.md b/doc/examples/spritesheet/README.md new file mode 100644 index 000000000..88d943cb6 --- /dev/null +++ b/doc/examples/spritesheet/README.md @@ -0,0 +1,5 @@ +# spritesheet + +A Flame game showcasing how to use spritesheet + +Image from: https://github.com/fireslime/bgug diff --git a/doc/examples/spritesheet/assets/images/spritesheet.png b/doc/examples/spritesheet/assets/images/spritesheet.png new file mode 100644 index 0000000000000000000000000000000000000000..bb27140fba697d78fe5682fdf00f5e024495fc1f GIT binary patch literal 2159 zcmV-#2$1)QP)Px-DM>^@RCt{2TtR3XM-+VFtF2l)~l z%W)2IoHX=eLsLVDm5?3`NkHUgjFEH?g}6{`atOJ^mcYi)-n~6&XFNMQJ3FJ1ELq9} z!_G?Y|NrLy9nJ2}7~nAZ>XFZ%J4^WHpWlt*H|6&lXFY$$a2%(n9bj5Ort$Y$zi9!U zR{VYd6Mk`Lzb$@oXP>zDEdV|M%kw;H?8?>AL?id_-lJUh{N$@g{@b5RmY9_c$8r36 zy{^MIjUR^mv#y`_m1ytq#w~iha_zDA~+~-3V9Ml0?y>JiB~39fTr;eyM9qj09wUEY)!1LW4kZ~Y-}Nu%Z3U$ zj(_3K5~_u%(1#PN>sWlUq{J8c53oFDw+i?*fDMLS-Ppp1r<2J3^)F2bX;;ge$mFtk z4dCX9vz{ivF#e&}&x6>za&;7+KYqf*>N>u>e}OOWUjP6udDnrxV=Rx^SV`jlHh;oF z>jMAs{sk@qO8mncw}6c;T=K4m{RcP)z={*10bv3}e8h6)A)y7 zKM!i}^T$sBfbGH*#`lit7v46qXL4CO(FTB8t;YU*vFP*&fJ`onA8x;;LisijNq|ZG zru;$B&x6{#a&?sQ7G~!$!4yzCe4=Mzc3x&9mVfcx8vWApm>s$TBR_+_@58bzIF5r_ ztp@IfF~s$}lQD#ycoXM*`~KZ~u{OwE=fdnf7N0Cdj^p?S@qg7HMWQ`G_!Qw(_!Fz^ zp#qlPbU2QKdcDq`5;^T<0!-r{cKs38D)xf-gne-u{Nm1jh!Fc1JRE2LM2PT$2i?Bo zIP^HihN=Hv^Uu2ew(Ln>L@4nkFG7_4$KDDm2$Zz}AT(lV{(N;CDoNDg51W1zclNb! z;&^^1{Kpos>$-4VH*&5|pppO!T%oY@)Fcd|{s+H4Y};Ybchug>waZ#h5k!1b|A62z zn&){am&;bAQXy?0IJx;C=MCW_VH6^r9n2L8*oXhBJPWO#9hA#uCI0=p_o#ldwm_%& z6_BW(_~V`~B*rh`StBDOzU#XD%M&Fyj)T$BlUKQ(=i$PgB}^dxMMM%G0DYRF>)-c% z%W(Bq?{ zBe<@MN~MyhpXDV$wTLaC^;R*^VHJ1w{grE%t>T>}Ut#(X;R8UqT((@-^)IyHA80+b zAaifJ7D7XO$hZi+Eixi16rs`+5r`8YO^U#G+fxe>p9Ps_kjG}kb}#h{E&$b7Pz}~S z)a!N8!W}I>!S|2;Fydc)w+4)HZvq|1A$NBXxUTEFt}E+U`Wb6S!jmRR!CyytNnBaq z1fZX>b|k!{Q8>w8M|rv+OBqd;Lz?&}%PEUH`@Zm1avPvmjN($jUf+dx8dQ(U&ppn# ze#y%RC1{M~v3xT34jF1R8qzBxl}fcph61_;)A)y7zmC1fN3D-!#c0A;;Q~wn#}SBV z9^FWyNdipcA9nri*qhmHXcwRgUscP@ZlhJeJRwdr57i>z?RGi=rtuHE{-juB_Efa! z@O8NCj*JM>=`;Y)MHhTKDQH;$zVG{{3E*w;(2d`eKWO?z_Q(Pn07*M4664X~i?q~g zwUZqgEK;cy(&;o^ze>n#o9~2vNL1}Xl?O!~AsrdxixIkI*V z{iRv`|*(d)u%k^JfC7uh5Fi9NO+l3v)z z_;VxjP}sf)TDfJlq*AHy2+V$&7+~8Zu_~R=ZUR_=#3x%oGT(f0@!utO;%p@G$>-hH z&*q^}D4#%ZQvQe?)grcS+p5>=7THQ>+qPBQ+4qBOS&79f;sYStxLBBr#zNRN8lv!qU4G?LUh%T!cR&-+y%pb9_KfS%dS)A<5w;II6ixx6bj+7BbJW- zxR_M*i@5AM<+%7o_Np6Ov_HwpFrPHJ2Kd{0FLAM zq)mAIT7gER5jm&huhYCFZqiN%Rtu|_@O1Tm-I0;Z@92&U_NuAZ>y~ZXv7d|DXC17b lN~L1)JGTc-e?RTW_#dmRzq>P;_o)B?002ovPDHLkV1kyiLQ((# literal 0 HcmV?d00001 diff --git a/doc/examples/spritesheet/lib/main.dart b/doc/examples/spritesheet/lib/main.dart new file mode 100644 index 000000000..b1077132f --- /dev/null +++ b/doc/examples/spritesheet/lib/main.dart @@ -0,0 +1,52 @@ +import 'package:flame/flame.dart'; +import 'package:flame/game.dart'; +import 'package:flame/spritesheet.dart'; +import 'package:flame/components/animation_component.dart'; +import 'package:flame/components/component.dart'; +import 'package:flutter/material.dart'; + +void main() async { + final Size size = await Flame.util.initialDimensions(); + final game = MyGame(size); + runApp(game.widget); +} + +class MyGame extends BaseGame { + MyGame(Size screenSize) { + size = screenSize; + + final spritesheet = SpriteSheet( + imageName: 'spritesheet.png', + textureWidth: 16, + textureHeight: 18, + columns: 11, + rows: 2, + ); + + final vampireAnimation = spritesheet.createAnimation(0, stepTime: 0.1, to: 7); + final ghostAnimation = spritesheet.createAnimation(1, stepTime: 0.1, to: 7); + + final vampireComponent = AnimationComponent(80, 90, vampireAnimation); + vampireComponent.x = 150; + vampireComponent.y = 100; + + final ghostComponent = AnimationComponent(80, 90, ghostAnimation); + ghostComponent.x = 150; + ghostComponent.y = 220; + + add(vampireComponent); + add(ghostComponent); + + // Some plain sprites + final vampireSpriteComponent = SpriteComponent.fromSprite(80, 90, spritesheet.getSprite(0, 0)); + vampireSpriteComponent.x = 50; + vampireSpriteComponent.y = 100; + + final ghostSpriteComponent = SpriteComponent.fromSprite(80, 90, spritesheet.getSprite(1, 0)); + ghostSpriteComponent.x = 50; + ghostSpriteComponent.y = 220; + + add(vampireSpriteComponent); + add(ghostSpriteComponent); + } +} diff --git a/doc/examples/spritesheet/pubspec.yaml b/doc/examples/spritesheet/pubspec.yaml new file mode 100644 index 000000000..77ea24983 --- /dev/null +++ b/doc/examples/spritesheet/pubspec.yaml @@ -0,0 +1,21 @@ +name: spritesheet +description: Flame sample game showcasing spritesheet features + +version: 1.0.0+1 + +environment: + sdk: ">=2.1.0 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flame: + path: ../../../ + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + assets: + - assets/images/spritesheet.png