Initial
This commit is contained in:
parent
14fe1353d6
commit
175f09ab7e
BIN
assets/image.bmp
Normal file
BIN
assets/image.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 900 KiB |
BIN
assets/person.bmp
Normal file
BIN
assets/person.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
assets/tile.bmp
Normal file
BIN
assets/tile.bmp
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.1 KiB |
BIN
lib/.DS_Store
vendored
Normal file
BIN
lib/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
lib/jna-5.10.0.jar
Normal file
BIN
lib/jna-5.10.0.jar
Normal file
Binary file not shown.
BIN
lib/libjsdl-2.0.8-SNAPSHOT.jar
Normal file
BIN
lib/libjsdl-2.0.8-SNAPSHOT.jar
Normal file
Binary file not shown.
37
src/com/fmudanyali/FileLoader.java
Normal file
37
src/com/fmudanyali/FileLoader.java
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param fileName filename to get path of
|
||||||
|
* @return path to the asset in the assets folder.
|
||||||
|
*/
|
||||||
|
public class FileLoader {
|
||||||
|
public static String getFilePath(String fileName) throws Exception {
|
||||||
|
String protocol = FileLoader.class.getResource("").getProtocol();
|
||||||
|
if(Objects.equals(protocol, "jar")){
|
||||||
|
String jarPath = new File(FileLoader.class.getProtectionDomain().getCodeSource()
|
||||||
|
.getLocation().toURI()).getParentFile().getPath();
|
||||||
|
return jarPath + "/assets/" + fileName;
|
||||||
|
}
|
||||||
|
return System.getProperty("user.dir") + "/assets/" + fileName;
|
||||||
|
}
|
||||||
|
}
|
151
src/com/fmudanyali/Game.java
Normal file
151
src/com/fmudanyali/Game.java
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import com.sun.jna.ptr.IntByReference;
|
||||||
|
|
||||||
|
import org.libsdl.api.render.*;
|
||||||
|
import org.libsdl.api.video.SDL_Window;
|
||||||
|
import org.libsdl.api.surface.SDL_Surface;
|
||||||
|
import org.libsdl.api.rect.SDL_Rect;
|
||||||
|
import org.libsdl.api.event.events.SDL_Event;
|
||||||
|
|
||||||
|
import static org.libsdl.api.render.SdlRender.*;
|
||||||
|
import static org.libsdl.api.surface.SdlSurface.*;
|
||||||
|
import static org.libsdl.api.video.SDL_WindowFlags.*;
|
||||||
|
import static org.libsdl.api.video.SdlVideo.*;
|
||||||
|
import static org.libsdl.api.SDL_SubSystem.*;
|
||||||
|
import static org.libsdl.api.Sdl.*;
|
||||||
|
import static org.libsdl.api.scancode.SDL_Scancode.*;
|
||||||
|
//import static org.libsdl.api.error.SdlError.*;
|
||||||
|
import static org.libsdl.api.event.SdlEvents.*;
|
||||||
|
|
||||||
|
public class Game {
|
||||||
|
public static SDL_Window window;
|
||||||
|
public static SDL_Renderer renderer;
|
||||||
|
public static SDL_Texture texture, background, wallpaper, player;
|
||||||
|
public static SDL_Surface textureSurface = new SDL_Surface();
|
||||||
|
|
||||||
|
public static SDL_Rect viewport = new SDL_Rect();
|
||||||
|
public static SDL_Rect canvas = new SDL_Rect();
|
||||||
|
public static SDL_Rect playerPos = new SDL_Rect();
|
||||||
|
|
||||||
|
public static SDL_Event e = new SDL_Event();
|
||||||
|
public static boolean exit = false;
|
||||||
|
|
||||||
|
public static int WIDTH = 960;
|
||||||
|
public static int HEIGHT = 540;
|
||||||
|
public static int speed;
|
||||||
|
|
||||||
|
public static IntByReference bgwptr = new IntByReference();
|
||||||
|
public static IntByReference bghptr = new IntByReference();
|
||||||
|
|
||||||
|
public static void initialize() throws Exception{
|
||||||
|
// Initialize SDL
|
||||||
|
SDL_Init(SDL_INIT_VIDEO);
|
||||||
|
// Create Window
|
||||||
|
window = SDL_CreateWindow("SDL Java Test",
|
||||||
|
SDL_WINDOWPOS_CENTERED(), SDL_WINDOWPOS_CENTERED(),
|
||||||
|
WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
|
||||||
|
|
||||||
|
// Create Renderer
|
||||||
|
renderer = SDL_CreateRenderer(window, -1,
|
||||||
|
SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
|
||||||
|
|
||||||
|
// Create surface to load BMP into
|
||||||
|
textureSurface = SDL_LoadBMP(FileLoader.getFilePath("image.bmp"));
|
||||||
|
// Create texture from the surface
|
||||||
|
wallpaper = SDL_CreateTextureFromSurface(renderer, textureSurface);
|
||||||
|
// Destroy the surface
|
||||||
|
textureSurface = null;
|
||||||
|
textureSurface = SDL_LoadBMP(FileLoader.getFilePath("tile.bmp"));
|
||||||
|
texture = SDL_CreateTextureFromSurface(renderer, textureSurface);
|
||||||
|
textureSurface = null;
|
||||||
|
textureSurface = SDL_LoadBMP(FileLoader.getFilePath("person.bmp"));
|
||||||
|
player = SDL_CreateTextureFromSurface(renderer, textureSurface);
|
||||||
|
textureSurface = null;
|
||||||
|
// Create a background double the width of the texture, used for scrolling animation
|
||||||
|
background = Render.createBackgroundFromTexture(renderer, texture, 12, 30);
|
||||||
|
SDL_QueryTexture(background, null, null, bgwptr, bghptr);
|
||||||
|
System.out.printf("Background: %dx%d%n", bgwptr.getValue(), bghptr.getValue());
|
||||||
|
|
||||||
|
// Dimensions of the viewport, its x and y is used for positioning
|
||||||
|
viewport.x = viewport.y = 0;
|
||||||
|
viewport.w = canvas.w = 384;
|
||||||
|
viewport.h = canvas.h = 480;
|
||||||
|
canvas.x = (WIDTH - canvas.w)/2;
|
||||||
|
canvas.y = (HEIGHT - canvas.h)/2;
|
||||||
|
playerPos.x = playerPos.y = viewport.w - 16;
|
||||||
|
playerPos.w = playerPos.h = 32;
|
||||||
|
System.out.printf("BG Res: %dx%d%n", bgwptr.getValue(), bghptr.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void loop(){
|
||||||
|
while(!exit){
|
||||||
|
Time.Tick();
|
||||||
|
|
||||||
|
while(SDL_PollEvent(e) != 0){
|
||||||
|
switch(e.type){
|
||||||
|
case SDL_QUIT:
|
||||||
|
exit = true;
|
||||||
|
break;
|
||||||
|
case SDL_KEYDOWN:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Keyboard.getKeyboardState();
|
||||||
|
|
||||||
|
if(Keyboard.getKeyState(SDL_SCANCODE_LSHIFT)){
|
||||||
|
speed = 1;
|
||||||
|
}else{
|
||||||
|
speed = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(Keyboard.getKeyState(SDL_SCANCODE_A) | Keyboard.getKeyState(SDL_SCANCODE_LEFT)){
|
||||||
|
playerPos.x = Math.max(playerPos.x - (int)(speed * Time.deltaTime * 0.1), canvas.x);
|
||||||
|
}
|
||||||
|
if(Keyboard.getKeyState(SDL_SCANCODE_D) | Keyboard.getKeyState(SDL_SCANCODE_RIGHT)){
|
||||||
|
playerPos.x = Math.min(playerPos.x + (int)(speed * Time.deltaTime * 0.1), canvas.x + canvas.w - 32);
|
||||||
|
}
|
||||||
|
if(Keyboard.getKeyState(SDL_SCANCODE_W) | Keyboard.getKeyState(SDL_SCANCODE_UP)){
|
||||||
|
playerPos.y = Math.max(playerPos.y - (int)(speed * Time.deltaTime * 0.1), canvas.y);
|
||||||
|
}
|
||||||
|
if(Keyboard.getKeyState(SDL_SCANCODE_S) | Keyboard.getKeyState(SDL_SCANCODE_DOWN)){
|
||||||
|
playerPos.y = Math.min(playerPos.y + (int)(speed * Time.deltaTime * 0.1), canvas.y + canvas.h - 32);
|
||||||
|
}
|
||||||
|
|
||||||
|
viewport.y = Math.floorMod(viewport.y - (int)(Time.deltaTime * 0.1), bghptr.getValue() - canvas.h);
|
||||||
|
|
||||||
|
SDL_RenderClear(renderer);
|
||||||
|
SDL_RenderCopy(renderer, wallpaper, null, null);
|
||||||
|
SDL_RenderCopy(renderer, background, viewport, canvas);
|
||||||
|
SDL_RenderCopy(renderer, player, null, playerPos);
|
||||||
|
SDL_RenderPresent(renderer);
|
||||||
|
|
||||||
|
//System.out.printf("%d,%d%n", viewport.x, viewport.y);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void quit(){
|
||||||
|
SDL_DestroyTexture(texture);
|
||||||
|
SDL_DestroyRenderer(renderer);
|
||||||
|
SDL_DestroyWindow(window);
|
||||||
|
SDL_Quit();
|
||||||
|
}
|
||||||
|
}
|
33
src/com/fmudanyali/Keyboard.java
Normal file
33
src/com/fmudanyali/Keyboard.java
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import static org.libsdl.api.keyboard.SdlKeyboard.*;
|
||||||
|
import com.sun.jna.ptr.ByteByReference;
|
||||||
|
|
||||||
|
public class Keyboard {
|
||||||
|
public static ByteByReference keyboard = new ByteByReference();
|
||||||
|
|
||||||
|
public static void getKeyboardState(){
|
||||||
|
keyboard = SDL_GetKeyboardState(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean getKeyState(int key){
|
||||||
|
return keyboard.getPointer().getByte(key) == 1;
|
||||||
|
}
|
||||||
|
}
|
59
src/com/fmudanyali/Render.java
Normal file
59
src/com/fmudanyali/Render.java
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import com.sun.jna.ptr.IntByReference;
|
||||||
|
|
||||||
|
import org.libsdl.api.render.SDL_Renderer;
|
||||||
|
import org.libsdl.api.render.SDL_Texture;
|
||||||
|
import org.libsdl.api.rect.SDL_Rect;
|
||||||
|
|
||||||
|
import static org.libsdl.api.render.SdlRender.*;
|
||||||
|
import static org.libsdl.api.pixels.SDL_PixelFormatEnum.*;
|
||||||
|
|
||||||
|
public class Render {
|
||||||
|
public static SDL_Texture createBackgroundFromTexture(
|
||||||
|
SDL_Renderer renderer, SDL_Texture texture, int cols, int rows
|
||||||
|
){
|
||||||
|
// Set minimum row and col to 1
|
||||||
|
if (rows < 1) rows = 1;
|
||||||
|
if (cols < 1) cols = 1;
|
||||||
|
// Create int pointers for Query Texture
|
||||||
|
IntByReference txwptr = new IntByReference();
|
||||||
|
IntByReference txhptr = new IntByReference();
|
||||||
|
// Query the texture for dimensions
|
||||||
|
SDL_QueryTexture(texture, null, null, txwptr, txhptr);
|
||||||
|
// Store them in ints
|
||||||
|
int txw = txwptr.getValue();
|
||||||
|
int txh = txhptr.getValue();
|
||||||
|
// Remove the pointers
|
||||||
|
txwptr = txhptr = null;
|
||||||
|
// Calculate background resolution
|
||||||
|
int bgw = txw * cols;
|
||||||
|
int bgh = txh * rows;
|
||||||
|
// Create background texture
|
||||||
|
SDL_Texture background = SDL_CreateTexture(
|
||||||
|
renderer, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_TARGET, bgw, bgh);
|
||||||
|
// Set render target to background
|
||||||
|
SDL_SetRenderTarget(renderer, background);
|
||||||
|
// Create position rectangle for the texture
|
||||||
|
SDL_Rect txPos = new SDL_Rect();
|
||||||
|
txPos.x = txPos.y = 0;
|
||||||
|
txPos.w = txw;
|
||||||
|
txPos.h = txh;
|
||||||
|
// Loop for rows and columns
|
||||||
|
for(int i = 0; i < rows; ++i){
|
||||||
|
for(int j = 0; j < cols; ++j){
|
||||||
|
// Copy texture to the position
|
||||||
|
SDL_RenderCopy(renderer, texture, null, txPos);
|
||||||
|
// Increment x position
|
||||||
|
txPos.x += txw;
|
||||||
|
}
|
||||||
|
// Increment y position and clear x position
|
||||||
|
txPos.x = 0;
|
||||||
|
txPos.y += txh;
|
||||||
|
}
|
||||||
|
// Set render target back to window
|
||||||
|
SDL_SetRenderTarget(renderer, null);
|
||||||
|
// Return the background.
|
||||||
|
return background;
|
||||||
|
}
|
||||||
|
}
|
95
src/com/fmudanyali/RestartJVM.java
Normal file
95
src/com/fmudanyali/RestartJVM.java
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import java.lang.management.ManagementFactory;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Credits to kappa From
|
||||||
|
* https://jvm-gaming.org/t/starting-jvm-on-mac-with-xstartonfirstthread-programmatically/57547
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class RestartJVM {
|
||||||
|
public static boolean restartJVM() {
|
||||||
|
|
||||||
|
String osName = System.getProperty("os.name");
|
||||||
|
|
||||||
|
// if not a mac return false
|
||||||
|
if (!osName.startsWith("Mac") && !osName.startsWith("Darwin")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// get current jvm process pid
|
||||||
|
String pid = ManagementFactory.getRuntimeMXBean().getName().split("@")[0];
|
||||||
|
// get environment variable on whether XstartOnFirstThread is enabled
|
||||||
|
String env = System.getenv("JAVA_STARTED_ON_FIRST_THREAD_" + pid);
|
||||||
|
|
||||||
|
// if environment variable is "1" then XstartOnFirstThread is enabled
|
||||||
|
if (env != null && env.equals("1")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// restart jvm with -XstartOnFirstThread
|
||||||
|
String separator = System.getProperty("file.separator");
|
||||||
|
String classpath = System.getProperty("java.class.path");
|
||||||
|
String mainClass = System.getenv("JAVA_MAIN_CLASS_" + pid);
|
||||||
|
String jvmPath = System.getProperty("java.home") + separator + "bin" + separator + "java";
|
||||||
|
|
||||||
|
List<String> inputArguments = ManagementFactory.getRuntimeMXBean().getInputArguments();
|
||||||
|
|
||||||
|
ArrayList<String> jvmArgs = new ArrayList<String>();
|
||||||
|
|
||||||
|
jvmArgs.add(jvmPath);
|
||||||
|
jvmArgs.add("-XstartOnFirstThread");
|
||||||
|
jvmArgs.addAll(inputArguments);
|
||||||
|
jvmArgs.add("-cp");
|
||||||
|
jvmArgs.add(classpath);
|
||||||
|
jvmArgs.add(mainClass);
|
||||||
|
|
||||||
|
// if you don't need console output, just enable these two lines
|
||||||
|
// and delete bits after it. This JVM will then terminate.
|
||||||
|
//ProcessBuilder processBuilder = new ProcessBuilder(jvmArgs);
|
||||||
|
//processBuilder.start();
|
||||||
|
|
||||||
|
try {
|
||||||
|
ProcessBuilder processBuilder = new ProcessBuilder(jvmArgs);
|
||||||
|
processBuilder.redirectErrorStream(true);
|
||||||
|
Process process = processBuilder.start();
|
||||||
|
|
||||||
|
InputStream is = process.getInputStream();
|
||||||
|
InputStreamReader isr = new InputStreamReader(is);
|
||||||
|
BufferedReader br = new BufferedReader(isr);
|
||||||
|
String line;
|
||||||
|
|
||||||
|
while ((line = br.readLine()) != null) {
|
||||||
|
System.out.println(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
process.waitFor();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
30
src/com/fmudanyali/Test.java
Normal file
30
src/com/fmudanyali/Test.java
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
public class Test {
|
||||||
|
public static void main(String[] args) throws Exception{
|
||||||
|
if (RestartJVM.restartJVM()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Game.initialize();
|
||||||
|
Game.loop();
|
||||||
|
Game.quit();
|
||||||
|
}
|
||||||
|
}
|
32
src/com/fmudanyali/Time.java
Normal file
32
src/com/fmudanyali/Time.java
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2021 Furkan Mudanyali
|
||||||
|
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.fmudanyali;
|
||||||
|
|
||||||
|
import static org.libsdl.api.timer.SdlTimer.*;
|
||||||
|
|
||||||
|
public class Time {
|
||||||
|
public static int lastTime = 0;
|
||||||
|
public static int currentTime = 0;
|
||||||
|
public static int deltaTime = 0;
|
||||||
|
|
||||||
|
public static void Tick(){
|
||||||
|
lastTime = currentTime;
|
||||||
|
currentTime = SDL_GetTicks();
|
||||||
|
deltaTime = currentTime - lastTime;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user