Merge branch 'main' of github.com:progtime-net/DangerousD

This commit is contained in:
Mootfrost777 2023-08-18 12:51:54 +03:00
commit f624c873ff
11 changed files with 133 additions and 33 deletions

View file

@ -81,11 +81,12 @@
/processorParam:TextureFormat=Color /processorParam:TextureFormat=Color
/build:deathBackground.jpg /build:deathBackground.jpg
#begin DoomTestSong.mp3 #begin DoomTestSong.mp3
/importer:Mp3Importer /importer:Mp3Importer
/processor:SoundEffectProcessor /processor:SoundEffectProcessor
/processorParam:Quality=Best /processorParam:Quality=Best
/build:DoomTestSong.mp3 /build:sounds/DoomTestSong.mp3
#begin doors.png #begin doors.png
/importer:TextureImporter /importer:TextureImporter
@ -235,6 +236,18 @@
/processorParam:TextureFormat=Color /processorParam:TextureFormat=Color
/build:sliderBackground.png /build:sliderBackground.png
#begin sounds/DoomTestSong.mp3
/importer:Mp3Importer
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:sounds/DoomTestSong.mp3
#begin sounds/shotgun_shot.mp3
/importer:Mp3Importer
/processor:SoundEffectProcessor
/processorParam:Quality=Best
/build:sounds/shotgun_shot.mp3
#begin textboxbackground1-1.png #begin textboxbackground1-1.png
/importer:TextureImporter /importer:TextureImporter
/processor:TextureProcessor /processor:TextureProcessor

View file

@ -1 +1,24 @@
{"id":"playerShootLeft","textureName":"playerAnimation","startSpriteRectangle":{"X":201,"Y":34,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":2,"isCycle":false,"offset":"4, 0"} {
"id": "playerShootLeft",
"textureName": "playerAnimation",
"startSpriteRectangle": {
"X": 201,
"Y": 34,
"Width": 32,
"Height": 32
},
"frameSecond": [
{
"Item1": 0,
"Item2": 3
},
{
"Item1": 1,
"Item2": 20
}
],
"textureFrameInterval": 1,
"framesCount": 2,
"isCycle": false,
"offset": "4, 0"
}

View file

@ -1 +1,24 @@
{"id":"playerShootRight","textureName":"playerAnimation","startSpriteRectangle":{"X":201,"Y":1,"Width":32,"Height":32},"frameSecond":[{"Item1":0,"Item2":12}],"textureFrameInterval":1,"framesCount":2,"isCycle":false,"offset":"4, 0"} {
"id": "playerShootRight",
"textureName": "playerAnimation",
"startSpriteRectangle": {
"X": 201,
"Y": 1,
"Width": 32,
"Height": 32
},
"frameSecond": [
{
"Item1": 0,
"Item2": 3
},
{
"Item1": 1,
"Item2": 20
}
],
"textureFrameInterval": 1,
"framesCount": 2,
"isCycle": false,
"offset": "4, 0"
}

Binary file not shown.

View file

@ -30,6 +30,7 @@ namespace DangerousD.GameCore
LoadContent(); LoadContent();
AppManager.Instance.GameManager.Register(this); AppManager.Instance.GameManager.Register(this);
GraphicsComponent.parentId = id;
} }
public virtual void OnCollision(GameObject gameObject) public virtual void OnCollision(GameObject gameObject)
@ -68,5 +69,9 @@ namespace DangerousD.GameCore
} }
} }
public GraphicsComponent GetGraphicsComponent()
{
return this.GraphicsComponent;
}
} }
} }

View file

@ -31,6 +31,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
private int bullets; private int bullets;
public bool FallingThroughPlatform = false; public bool FallingThroughPlatform = false;
public bool isUping = false; public bool isUping = false;
public bool isNetworkPlayer;
@ -39,6 +41,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
public Player(Vector2 position, bool isNetworkPlayer = false) : base(position) public Player(Vector2 position, bool isNetworkPlayer = false) : base(position)
{ {
this.isNetworkPlayer = isNetworkPlayer;
Width = 16; Width = 16;
Height = 32; Height = 32;
@ -47,8 +50,6 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
AppManager.Instance.InputManager.ShootEvent += Shoot; AppManager.Instance.InputManager.ShootEvent += Shoot;
AppManager.Instance.InputManager.MovEventJump += Jump; AppManager.Instance.InputManager.MovEventJump += Jump;
AppManager.Instance.InputManager.MovEventDown += MoveDown; AppManager.Instance.InputManager.MovEventDown += MoveDown;
}
velocity = new Vector2(0, 0); velocity = new Vector2(0, 0);
rightBorder = (int)position.X + 100; rightBorder = (int)position.X + 100;
leftBorder = (int)position.X - 100; leftBorder = (int)position.X - 100;
@ -67,6 +68,8 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
}; };
} }
}
public bool IsAlive { get { return isAlive; } } public bool IsAlive { get { return isAlive; } }
protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft", protected override GraphicsComponent GraphicsComponent { get; } = new(new List<string> { "playerMoveLeft", "playerMoveRight", "DeathFromZombie", "playerRightStay", "playerStayLeft",
@ -136,6 +139,7 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
{ {
if (!isShooting) if (!isShooting)
{ {
AppManager.Instance.SoundManager.StartSound("shotgun_shot", Pos, Pos);
isShooting = true; isShooting = true;
bullets--; bullets--;
if (isRight) if (isRight)
@ -251,6 +255,5 @@ namespace DangerousD.GameCore.GameObjects.LivingEntities
FallingThroughPlatform = true; FallingThroughPlatform = true;
isOnGround = false; isOnGround = false;
} }
} }
} }

View file

@ -1,4 +1,5 @@
using DangerousD.GameCore.Managers; using DangerousD.GameCore.Managers;
using DangerousD.GameCore.Network;
using Microsoft.Xna.Framework; using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Graphics;
@ -18,6 +19,7 @@ namespace DangerousD.GameCore.Graphics
private List<string> texturesNames; private List<string> texturesNames;
private AnimationContainer currentAnimation; private AnimationContainer currentAnimation;
static private int scaling = 4; static private int scaling = 4;
public int parentId;
public AnimationContainer CurrentAnimation public AnimationContainer CurrentAnimation
{ {
get get
@ -105,6 +107,14 @@ namespace DangerousD.GameCore.Graphics
public void StartAnimation(string startedanimationId) public void StartAnimation(string startedanimationId)
{ {
if (startedanimationId == "playerShootRight" && parentId == 17)
{
string a = "2";
}
if (AppManager.Instance.multiPlayerStatus != MultiPlayerStatus.SinglePlayer && startedanimationId != GetCurrentAnimation)
{
AppManager.Instance.NetworkTasks.Add(new NetworkTask(parentId, startedanimationId, Vector2.Zero));
}
currentFrame = 0; currentFrame = 0;
currentAnimation = animations.Find(x => x.Id == startedanimationId); currentAnimation = animations.Find(x => x.Id == startedanimationId);

View file

@ -111,9 +111,8 @@ namespace DangerousD.GameCore
{ {
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape)) if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit(); Exit();
if (GameManager.GetPlayer1 != null) if (GameManager.GetPlayer1 != null)
DebugHUD.Set("Objid: ", GameManager.GetPlayer1.id.ToString()); DebugHUD.Set("id: ", GameManager.GetPlayer1.id.ToString());
InputManager.Update(); InputManager.Update();
SoundManager.Update(); SoundManager.Update();
@ -229,9 +228,10 @@ namespace DangerousD.GameCore
case NetworkTaskOperationEnum.CreateEntity: case NetworkTaskOperationEnum.CreateEntity:
break; break;
case NetworkTaskOperationEnum.SendPosition: case NetworkTaskOperationEnum.SendPosition:
if (networkTask.objId != GameManager.GetPlayer1.id) if (networkTask.objId != GameManager.GetPlayer1.id )
{ {
LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId); LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId);
if (entity != null)
entity.SetPosition(networkTask.position); entity.SetPosition(networkTask.position);
if (multiPlayerStatus == MultiPlayerStatus.Host) if (multiPlayerStatus == MultiPlayerStatus.Host)
{ {
@ -240,6 +240,20 @@ namespace DangerousD.GameCore
} }
break; break;
case NetworkTaskOperationEnum.ChangeState: case NetworkTaskOperationEnum.ChangeState:
if (networkTask.objId != GameManager.GetPlayer1.id)
{
List<GraphicsComponent> gcs = new List<GraphicsComponent>();
foreach (var player in GameManager.players)
{
gcs.Add(player.GetGraphicsComponent());
}
LivingEntity entity = GameManager.livingEntities.Find(x => x.id == networkTask.objId);
if (entity != null)
{
GraphicsComponent gc = entity.GetGraphicsComponent();
gc.StartAnimation(networkTask.name);
}
}
break; break;
case NetworkTaskOperationEnum.ConnectToHost: case NetworkTaskOperationEnum.ConnectToHost:
Player connectedPlayer = new Player(Vector2.Zero, true); Player connectedPlayer = new Player(Vector2.Zero, true);
@ -257,13 +271,15 @@ namespace DangerousD.GameCore
if (!GameManager.GetPlayer1.isIdFromHost) if (!GameManager.GetPlayer1.isIdFromHost)
{ {
GameManager.GetPlayer1.id = networkTask.objId; GameManager.GetPlayer1.id = networkTask.objId;
GraphicsComponent gcsd = GameManager.GetPlayer1.GetGraphicsComponent();
gcsd.parentId = networkTask.objId;
GameManager.GetPlayer1.isIdFromHost = true; GameManager.GetPlayer1.isIdFromHost = true;
} }
break; break;
case NetworkTaskOperationEnum.AddConnectedPlayer: case NetworkTaskOperationEnum.AddConnectedPlayer:
Player remoteConnectedPlayer = new Player(networkTask.position, true); Player remoteConnectedPlayer = new Player(networkTask.position, true);
remoteConnectedPlayer.id = networkTask.objId; remoteConnectedPlayer.id = networkTask.objId;
remoteConnectedPlayer.GetGraphicsComponent().parentId = networkTask.objId;
break; break;
default: default:
break; break;

View file

@ -150,14 +150,21 @@ namespace DangerousD.GameCore
} }
else else
{ {
for (int i = 0; i < livingEntitiesWithoutPlayers.Count; i++) for (int i = 0; i < livingEntitiesWithoutPlayers.Count; i++)
{ {
livingEntitiesWithoutPlayers[i].PlayAnimation(); livingEntitiesWithoutPlayers[i].PlayAnimation();
} }
} }
foreach (Player player in players)
{
if (player.id != GetPlayer1.id)
{
player.PlayAnimation();
}
}
GetPlayer1.Update(gameTime); GetPlayer1.Update(gameTime);
foreach (var item in otherObjects) foreach (var item in otherObjects)
item.Update(gameTime); item.Update(gameTime);

View file

@ -19,7 +19,7 @@ namespace DangerousD.GameCore
public void LoadSounds() // метод для загрузки звуков из папки public void LoadSounds() // метод для загрузки звуков из папки
{ {
var k = Directory.GetFiles("../../..//Content").Where(x => x.EndsWith("mp3")); var k = Directory.GetFiles("../../..//Content//sounds").Where(x => x.EndsWith("mp3"));
if (k.Count() > 0) if (k.Count() > 0)
{ {
@ -27,7 +27,7 @@ namespace DangerousD.GameCore
string[] soundFiles = k.Select(x => x.Split("\\").Last().Split("/").Last().Replace(".mp3", "")).ToArray();// папка со звуками там где exe string[] soundFiles = k.Select(x => x.Split("\\").Last().Split("/").Last().Replace(".mp3", "")).ToArray();// папка со звуками там где exe
foreach (var soundFile in soundFiles) foreach (var soundFile in soundFiles)
{ {
Sounds.Add(soundFile, AppManager.Instance.Content.Load<SoundEffect>(soundFile).CreateInstance()); Sounds.Add(soundFile, AppManager.Instance.Content.Load<SoundEffect>("sounds//" + soundFile).CreateInstance());
} }
} }
@ -53,7 +53,7 @@ namespace DangerousD.GameCore
{ {
var sound = new Sound(Sounds[soundName], soundPos); var sound = new Sound(Sounds[soundName], soundPos);
sound.SoundEffect.IsLooped = false; sound.SoundEffect.IsLooped = false;
sound.SoundEffect.Volume = (float)sound.GetDistance(playerPos) / MaxSoundDistance; sound.SoundEffect.Volume = (float)(MaxSoundDistance-sound.GetDistance(playerPos)) / MaxSoundDistance;
sound.SoundEffect.Play(); sound.SoundEffect.Play();
PlayingSounds.Add(sound); PlayingSounds.Add(sound);
if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host) if (AppManager.Instance.multiPlayerStatus == MultiPlayerStatus.Host)
@ -79,7 +79,7 @@ namespace DangerousD.GameCore
for (int i = 0; i < PlayingSounds.Count; i++) for (int i = 0; i < PlayingSounds.Count; i++)
{ {
if (!PlayingSounds[i].isAmbient) if (!PlayingSounds[i].isAmbient)
PlayingSounds[i].SoundEffect.Volume = (float)PlayingSounds[i].GetDistance(player.Pos) / MaxSoundDistance; PlayingSounds[i].SoundEffect.Volume = (float)(MaxSoundDistance - PlayingSounds[i].GetDistance(player.Pos)) / MaxSoundDistance;
if (PlayingSounds[i].SoundEffect.State == SoundState.Stopped) if (PlayingSounds[i].SoundEffect.State == SoundState.Stopped)
PlayingSounds.Remove(PlayingSounds[i]); PlayingSounds.Remove(PlayingSounds[i]);
} }