boh forse scale
This commit is contained in:
parent
897df5f308
commit
6832e20527
15 changed files with 57 additions and 358 deletions
|
@ -39,6 +39,10 @@ public class Entity : MonoBehaviour
|
|||
hp = hpMax;
|
||||
}
|
||||
|
||||
public virtual void OnNewLevel() {
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
||||
public virtual void Die() {
|
||||
Debug.LogWarning("Die not overridden");
|
||||
Destroy(gameObject);
|
||||
|
|
|
@ -6,21 +6,14 @@ public class EntityItemShop : EntityItem {
|
|||
public float hpChange = -1f;
|
||||
public float maxHpChange = -1f;
|
||||
|
||||
protected EntityPlayer player;
|
||||
|
||||
protected override void Start() {
|
||||
base.Start();
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<EntityPlayer>();
|
||||
}
|
||||
|
||||
protected virtual void OnPurchase() {
|
||||
protected virtual void OnPurchase(EntityPlayer player) {
|
||||
Debug.LogWarning("OnPurchase not overridden");
|
||||
}
|
||||
|
||||
public override void OnPickup(EntityPlayer player) {
|
||||
player.hp += hpChange;
|
||||
player.hpMax += maxHpChange;
|
||||
OnPurchase();
|
||||
OnPurchase(player);
|
||||
messageBar.Write("Bought: " + Name, Color.yellow);
|
||||
Destroy(gameObject);
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@ public class EntityItemShopSword : EntityItemShop {
|
|||
}
|
||||
}
|
||||
|
||||
protected override void OnPurchase() {
|
||||
protected override void OnPurchase(EntityPlayer player) {
|
||||
Destroy(player.GetComponent<PlayerAttack>());
|
||||
player.gameObject.AddComponent<PlayerAttackMelee>();
|
||||
PlayerAttackMelee pam = player.GetComponent<PlayerAttackMelee>();
|
||||
|
|
17
Assets/Scripts/EntityItemStairs.cs
Normal file
17
Assets/Scripts/EntityItemStairs.cs
Normal file
|
@ -0,0 +1,17 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EntityItemStairs : EntityItem
|
||||
{
|
||||
public override string Name {
|
||||
get {
|
||||
return "Stairs";
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnPickup(EntityPlayer player) {
|
||||
messageBar.Write("Generating next floor...", Color.magenta);
|
||||
map.NewLevel();
|
||||
}
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EntityMonsterMage : EntityMonster
|
||||
{
|
||||
public override string Name {
|
||||
get {
|
||||
return "Mage";
|
||||
}
|
||||
}
|
||||
|
||||
public float moveChance = 0.5f;
|
||||
public float visionRange = 7f;
|
||||
public GameObject attackAnimation;
|
||||
protected EntityPlayer player;
|
||||
|
||||
protected new void Start() {
|
||||
base.Start();
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<EntityPlayer>();
|
||||
}
|
||||
|
||||
public override void OnTurn(){
|
||||
if(Random.Range(0f, 1f) < moveChance) return;
|
||||
if (CanSeePlayer()){
|
||||
Vector2Int distance = player.MapPosition - MapPosition;
|
||||
if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (distance.x > 0 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (distance.y > 0 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (distance.y < 0 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanSeePlayer(){
|
||||
return Vector3.Distance(player.transform.position, transform.position) < visionRange;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected() {
|
||||
Gizmos.color = Color.cyan;
|
||||
Gizmos.DrawWireSphere(transform.position, visionRange);
|
||||
}
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EntityMonsterSkeletonArcher : EntityMonster
|
||||
{
|
||||
public override string Name {
|
||||
get {
|
||||
return "Skeleton Archer";
|
||||
}
|
||||
}
|
||||
|
||||
public float moveChance = 0f;
|
||||
public float visionRange = 5f;
|
||||
public GameObject attackAnimation;
|
||||
protected EntityPlayer player;
|
||||
|
||||
protected new void Start() {
|
||||
base.Start();
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<EntityPlayer>();
|
||||
}
|
||||
|
||||
public override void OnTurn(){
|
||||
if(Random.Range(0f, 1f) < moveChance) return;
|
||||
if (CanSeePlayer()){
|
||||
Vector2Int distance = player.MapPosition - MapPosition;
|
||||
if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (distance.x > 0 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (distance.y > 0 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (distance.y < 0 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanSeePlayer(){
|
||||
return Vector3.Distance(player.transform.position, transform.position) < visionRange;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected() {
|
||||
Gizmos.color = Color.cyan;
|
||||
Gizmos.DrawWireSphere(transform.position, visionRange);
|
||||
}
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EntityMonsterSkeletonSwordsman : EntityMonster
|
||||
{
|
||||
public override string Name {
|
||||
get {
|
||||
return "Skeleton Swordsman";
|
||||
}
|
||||
}
|
||||
|
||||
public float moveChance = 0f;
|
||||
public float visionRange = 4f;
|
||||
public GameObject attackAnimation;
|
||||
protected EntityPlayer player;
|
||||
|
||||
protected new void Start() {
|
||||
base.Start();
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<EntityPlayer>();
|
||||
}
|
||||
|
||||
public override void OnTurn(){
|
||||
if(Random.Range(0f, 1f) < moveChance) return;
|
||||
if (CanSeePlayer()){
|
||||
Vector2Int distance = player.MapPosition - MapPosition;
|
||||
if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (distance.x > 0 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (distance.y > 0 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (distance.y < 0 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanSeePlayer(){
|
||||
return Vector3.Distance(player.transform.position, transform.position) < visionRange;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected() {
|
||||
Gizmos.color = Color.cyan;
|
||||
Gizmos.DrawWireSphere(transform.position, visionRange);
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ public class EntityMonsterSlime : EntityMonster
|
|||
|
||||
public float moveChance = 0.5f;
|
||||
public float visionRange = 4f;
|
||||
public float attackRange = 1f;
|
||||
public float damage = 1f;
|
||||
public GameObject attackAnimation;
|
||||
protected EntityPlayer player;
|
||||
|
@ -25,7 +26,13 @@ public class EntityMonsterSlime : EntityMonster
|
|||
if(Random.Range(0f, 1f) < moveChance) return;
|
||||
if (CanSeePlayer()){
|
||||
Vector2Int distance = player.MapPosition - MapPosition;
|
||||
if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
if(distance.magnitude <= attackRange) {
|
||||
float actualDamage = Random.value * damage;
|
||||
player.hp -= actualDamage;
|
||||
Instantiate(attackAnimation, player.transform);
|
||||
messageBar.Write("Took damage from a slime.", Color.red);
|
||||
}
|
||||
else if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (distance.x > 0 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
|
@ -39,24 +46,18 @@ public class EntityMonsterSlime : EntityMonster
|
|||
}
|
||||
}
|
||||
else {
|
||||
if(Vector3.Distance(player.transform.position, transform.position) > 2){
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else{
|
||||
float damage_done = Random.value * damage;
|
||||
player.hp -= damage;
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class EntityMonsterWatcher : EntityMonster
|
||||
{
|
||||
public override string Name {
|
||||
get {
|
||||
return "Watcher";
|
||||
}
|
||||
}
|
||||
|
||||
public float moveChance = 0f;
|
||||
public float visionRange = 12f;
|
||||
public GameObject attackAnimation;
|
||||
protected EntityPlayer player;
|
||||
|
||||
protected new void Start() {
|
||||
base.Start();
|
||||
player = GameObject.FindGameObjectWithTag("Player").GetComponent<EntityPlayer>();
|
||||
}
|
||||
|
||||
public override void OnTurn(){
|
||||
if(Random.Range(0f, 1f) < moveChance) return;
|
||||
if (CanSeePlayer()){
|
||||
Vector2Int distance = player.MapPosition - MapPosition;
|
||||
if (distance.x < 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (distance.x > 0 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (distance.y > 0 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (distance.y < 0 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
else {
|
||||
int direction = Random.Range(0, 4);
|
||||
if (direction == 0 && map.CanMoveTo(MapPosition + Vector2Int.left)){
|
||||
transform.Translate(Vector3.left);
|
||||
}
|
||||
else if (direction == 1 && map.CanMoveTo(MapPosition + Vector2Int.right)){
|
||||
transform.Translate(Vector3.right);
|
||||
}
|
||||
else if (direction == 2 && map.CanMoveTo(MapPosition + Vector2Int.up)){
|
||||
transform.Translate(Vector3.up);
|
||||
}
|
||||
else if (direction == 3 && map.CanMoveTo(MapPosition + Vector2Int.down)){
|
||||
transform.Translate(Vector3.down);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool CanSeePlayer(){
|
||||
return Vector3.Distance(player.transform.position, transform.position) < visionRange;
|
||||
}
|
||||
|
||||
private void OnDrawGizmosSelected() {
|
||||
Gizmos.color = Color.cyan;
|
||||
Gizmos.DrawWireSphere(transform.position, visionRange);
|
||||
}
|
||||
}
|
|
@ -110,4 +110,6 @@ public class EntityPlayer : Entity
|
|||
turnHandler.OnTurn();
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnNewLevel() {};
|
||||
}
|
||||
|
|
|
@ -287,8 +287,9 @@ public class Map : MonoBehaviour
|
|||
}
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
public void NewLevel() {
|
||||
//Cleanup everything.
|
||||
transform.parent.BroadcastMessage("OnNewLevel");
|
||||
//Initialize everything
|
||||
tiles = new GameObject[mapSize, mapSize];
|
||||
rooms = new List<MapRoom>();
|
||||
|
@ -299,4 +300,9 @@ public class Map : MonoBehaviour
|
|||
PlacePlayer();
|
||||
PlaceEnemies();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
NewLevel();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,4 +15,8 @@ public class MapTile : MonoBehaviour
|
|||
spriteRenderer = GetComponent<SpriteRenderer>();
|
||||
spriteRenderer.sprite = sprite;
|
||||
}
|
||||
|
||||
public void OnNewLevel() {
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
public class NextLevel : MonoBehaviour {
|
||||
//TODO
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
import requests
|
||||
r = requests.post("http://127.0.0.1:5000/message/2", data={'content':'Piano 2'})
|
||||
print(r.text)
|
|
@ -1,58 +0,0 @@
|
|||
from flask import Flask, session, url_for, redirect, request, render_template, abort, flash, Markup, json
|
||||
from datetime import datetime
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
import random
|
||||
import os
|
||||
from sqlalchemy.sql.expression import func
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = "debug-attivo"
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///db.sqlite'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
db = SQLAlchemy(app)
|
||||
app.config.from_object(__name__)
|
||||
|
||||
|
||||
# Database Classes go beyond this line
|
||||
|
||||
class Message(db.Model):
|
||||
mid = db.Column(db.Integer, primary_key=True)
|
||||
floor = db.Column(db.Integer, nullable=False)
|
||||
content = db.Column(db.String, nullable=False)
|
||||
|
||||
def toJSON(self):
|
||||
return {"Message": {'floor': self.floor,
|
||||
'content': self.content}}
|
||||
|
||||
def __init__(self, content, floor):
|
||||
self.content = content
|
||||
self.floor = floor
|
||||
|
||||
def __repr__(self):
|
||||
return self.content
|
||||
|
||||
|
||||
def give_json_response(floor):
|
||||
messages = Message.query.filter_by(floor=floor).order_by(func.random()).limit(5).all()
|
||||
return json.dumps([message.toJSON() for message in messages])
|
||||
|
||||
|
||||
# Website pages and API functions go beyond this line
|
||||
@app.route("/message/<int:floor>", methods=["GET", "POST"])
|
||||
def page_message(floor):
|
||||
if request.method == "GET":
|
||||
return give_json_response(floor)
|
||||
newmessage = Message(request.form['content'], floor)
|
||||
db.session.add(newmessage)
|
||||
db.session.commit()
|
||||
return "Success."
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Se non esiste il database viene creato
|
||||
if not os.path.isfile("db.sqlite"):
|
||||
newmessage = Message("Welcome to the dungeon, mortal.", 1)
|
||||
db.create_all()
|
||||
db.session.add(newmessage)
|
||||
db.session.commit()
|
||||
app.run(debug=True)
|
Loading…
Reference in a new issue