first Prototype

This commit is contained in:
Exobyt 2025-08-28 01:55:38 +02:00
parent e11825c698
commit 35ce267482
481 changed files with 17315 additions and 1 deletions

View file

@ -0,0 +1,7 @@
extends Node
enum ITEMTYPES {
EMPTY,
STANDARDBULLET,
LUCKYBULLET
}

View file

@ -0,0 +1 @@
uid://bfagh8y1c83i2

40
scripts/gun/gun.gd Normal file
View file

@ -0,0 +1,40 @@
class_name Gun extends Node
@onready var empty = preload("res://scripts/item/bullet/Empty/empty.gd")
const maxMagazineSize: int = 12
const minMagazineSize: int = 2
var magazineSize: int = 6
var loadedBullets: int = 0
var magazin: Array[Bullet]
var mainOwner: Player
func setOwner(_player: Player) -> void:
mainOwner = _player
func loadBullet(_bullet: Bullet):
if magazin.size() + 1 <= magazineSize:
magazin.append(_bullet)
func fillEmpty():
if magazin.size() < magazineSize:
for i in range(0, magazineSizeLeft()):
loadBullet(Empty.new())
func resetMagazine():
magazin = []
func getRandomBullet() -> Bullet:
fillEmpty()
var randomBullet = magazin.pick_random()
magazin.erase(randomBullet)
return randomBullet
func getBulletAmount() -> int:
return magazin.size()
func magazineSizeLeft() -> int:
return magazineSize - magazin.size()

1
scripts/gun/gun.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://b3s5n3psysjrr

View file

@ -0,0 +1,5 @@
class_name Empty extends Bullet
func _init() -> void:
type = GLOBALS.ITEMTYPES.EMPTY
damage = 0

View file

@ -0,0 +1 @@
uid://c3l3ik8fk4h3b

View file

@ -0,0 +1,12 @@
class_name LuckyBullet extends Bullet
var minDamage: int = 0
var maxDamage: int = 2
func _init() -> void:
type = GLOBALS.ITEMTYPES.LUCKYBULLET
func getDamage() -> int:
randomize()
var rng = RandomNumberGenerator.new()
return rng.randi_range(minDamage, maxDamage)

View file

@ -0,0 +1 @@
uid://bxlgreqfamldl

View file

@ -0,0 +1,5 @@
class_name StandardBullet extends Bullet
func _init() -> void:
type = GLOBALS.ITEMTYPES.STANDARDBULLET
damage = 1

View file

@ -0,0 +1 @@
uid://c1gjjch8h0q21

View file

@ -0,0 +1,6 @@
class_name Bullet extends Item
var damage: int = 0
func getDamage() -> int:
return damage

View file

@ -0,0 +1 @@
uid://bbqlf1ni1fgmu

3
scripts/item/item.gd Normal file
View file

@ -0,0 +1,3 @@
class_name Item extends Node
var type: GLOBALS.ITEMTYPES

1
scripts/item/item.gd.uid Normal file
View file

@ -0,0 +1 @@
uid://bkg3ot20liwdx

110
scripts/player/player.gd Normal file
View file

@ -0,0 +1,110 @@
class_name Player extends Node
var gameName: String = ""
# -- HEALTH --
const maxHealth: int = 3
const minHealth: int = 0
var health := maxHealth
# -- HEALTH --
# -- Item --
var itemInventory: Array[Item] = []
# -- Item --
var gun: Gun
var selectedPlayer: Player = self
var character: Character
var bot: bool = false
signal dead(player: Player)
signal hit(player: Player)
signal missed()
signal hurt()
func _init(_name: String, _gun: Gun, _character: Character) -> void:
gameName = _name
gun = _gun
character = _character
gun.setOwner(self)
# -- HEALTH --
func damage(amount: int) -> void:
print("Hit")
if health - amount < minHealth:
kill()
health = minHealth
else:
health -= amount
for i in range(0,amount):
character.removeShot()
func heal(amount: int) -> void:
if health + amount > maxHealth:
health = maxHealth
else:
health += amount
func getHealth () -> int:
return health
func kill():
dead.emit(self)
# -- HEALTH --
# -- Item --
func addItem(_item: Item) -> void:
itemInventory.append(_item)
func removeItem(_item: Item) -> void:
itemInventory.erase(_item)
func getItems() -> Array[Item]:
return itemInventory
# -- Item --
# -- Gun --
func giveGun(_gun: Gun):
gun = _gun
func takeGun():
gun = null
func useItem(_item: Item):
if _item is Bullet:
loadBullet(_item)
else:
print("no bullet")
func loadBullet(_bullet: Bullet):
gun.loadBullet(_bullet)
itemInventory.erase(_bullet)
func shootAtSelectedPlayer():
var randomBullet = gun.getRandomBullet()
if randomBullet is StandardBullet or randomBullet is LuckyBullet:
var bulletDamage = randomBullet.getDamage()
if bulletDamage > 0:
selectedPlayer.damage(bulletDamage)
else:
print("Missed")
else:
print("Empty")
# -- Gun --
func selectPlayer(_player: Player) -> void:
selectedPlayer = _player
func getGameName() -> String:
return gameName
func setCharacter(_character: Character) -> void:
character = _character
func getItemAmount() -> int:
return itemInventory.size()

View file

@ -0,0 +1 @@
uid://fkhkxtks5vaw