diff --git a/SGO/Component/Actor/BasicActorComponent.cs b/SGO/Component/Actor/BasicActorComponent.cs index 46533f22c6..42cb2b1af9 100644 --- a/SGO/Component/Actor/BasicActorComponent.cs +++ b/SGO/Component/Actor/BasicActorComponent.cs @@ -2,10 +2,28 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using ServerInterfaces; namespace SGO { public class BasicActorComponent : GameObjectComponent { + IPlayerSession playerSession; + + public BasicActorComponent() + { + family = SS3D_shared.GO.ComponentFamily.Actor; + } + + public override void SetParameter(ComponentParameter parameter) + { + switch (parameter.MemberName) + { + case "playersession": + if (parameter.ParameterType == typeof(IPlayerSession)) + playerSession = (IPlayerSession)parameter.Parameter; + break; + } + } } } diff --git a/SGO/Component/Damageable/DamageableComponent.cs b/SGO/Component/Damageable/DamageableComponent.cs index df967b499e..c493c3d4f4 100644 --- a/SGO/Component/Damageable/DamageableComponent.cs +++ b/SGO/Component/Damageable/DamageableComponent.cs @@ -2,12 +2,38 @@ using System.Collections.Generic; using System.Linq; using System.Text; +using SS3D_shared.GO; namespace SGO.Component.Damageable { - public class DamageableComponent + public class DamageableComponent : GameObjectComponent { + public DamageableComponent() + { + family = SS3D_shared.GO.ComponentFamily.Damageable; + } + + public override void RecieveMessage(object sender, SS3D_shared.GO.ComponentMessageType type, List replies, params object[] list) + { + switch (type) + { + case SS3D_shared.GO.ComponentMessageType.Damage: + /// Who damaged, how much, what type + ApplyDamage((Entity)list[0], (int)list[0], (DamageType)list[1]); + break; + + } + } + + private void ApplyDamage(Entity damager, int damageamount, DamageType damType) + { + throw new NotImplementedException(); + } + + private void ApplyDamage(int p) + { + throw new NotImplementedException(); + } - } } diff --git a/SGO/ComponentParameter.cs b/SGO/ComponentParameter.cs index ee27c34108..58672f1075 100644 --- a/SGO/ComponentParameter.cs +++ b/SGO/ComponentParameter.cs @@ -22,11 +22,11 @@ namespace SGO set { } } - private string m_parameterType; + private Type m_parameterType; /// /// The type of parameter specified /// - public string ParameterType + public Type ParameterType { get { return m_parameterType; } @@ -44,7 +44,7 @@ namespace SGO set { } } - public ComponentParameter(string memberName, string parameterType, object parameter) + public ComponentParameter(string memberName, Type parameterType, object parameter) { m_memberName = memberName; m_parameterType = parameterType; diff --git a/SS3D_shared/GO/ComponentEnums.cs b/SS3D_shared/GO/ComponentEnums.cs index 3bd2b4c4f4..9bde8f6d4a 100644 --- a/SS3D_shared/GO/ComponentEnums.cs +++ b/SS3D_shared/GO/ComponentEnums.cs @@ -30,6 +30,7 @@ namespace SS3D_shared.GO Health, // Has hitpoints, applies damage, organs? Renderable, // Can be rendered -- sprite or particle system Light, + Damageable, } public enum ItemComponentNetMessage @@ -107,6 +108,7 @@ namespace SS3D_shared.GO UnEquipItemToHand, EquipItemInHand, DropItemInCurrentHand, + Damage, } public enum Hand diff --git a/SS3D_shared/GO/ItemFlags.cs b/SS3D_shared/GO/ItemFlags.cs index cf0dffac46..fc620af90f 100644 --- a/SS3D_shared/GO/ItemFlags.cs +++ b/SS3D_shared/GO/ItemFlags.cs @@ -59,7 +59,7 @@ namespace SS3D_shared.GO Cut, } - public enum MeleeType + public enum DamageType { Hit, Slice, diff --git a/SS3D_shared/ServicesEnum.cs b/SS3D_shared/ServicesEnum.cs index ae1ea0ddef..6da1339777 100644 --- a/SS3D_shared/ServicesEnum.cs +++ b/SS3D_shared/ServicesEnum.cs @@ -11,6 +11,7 @@ public enum ServerServiceType LogManager, NetServer, Map, - ChatManager + ChatManager, + PlayerManager } \ No newline at end of file diff --git a/SS3d_server/Atom/Object/Door/Door.cs b/SS3d_server/Atom/Object/Door/Door.cs index 6bcd885d81..17f700767e 100644 --- a/SS3d_server/Atom/Object/Door/Door.cs +++ b/SS3d_server/Atom/Object/Door/Door.cs @@ -31,8 +31,8 @@ namespace SS3D_Server.Atom.Object.Door AddComponent(SS3D_shared.GO.ComponentFamily.Interactable, ComponentFactory.Singleton.GetComponent("BasicInteractableComponent")); AddComponent(SS3D_shared.GO.ComponentFamily.Collidable, ComponentFactory.Singleton.GetComponent("CollidableComponent")); AddComponent(SS3D_shared.GO.ComponentFamily.LargeObject, ComponentFactory.Singleton.GetComponent("BasicDoorComponent")); - GetComponent(SS3D_shared.GO.ComponentFamily.LargeObject).SetParameter(new ComponentParameter("OpenSprite", "string", "door_ewo")); - GetComponent(SS3D_shared.GO.ComponentFamily.LargeObject).SetParameter(new ComponentParameter("ClosedSprite", "string", "door_ew")); + GetComponent(SS3D_shared.GO.ComponentFamily.LargeObject).SetParameter(new ComponentParameter("OpenSprite", typeof(string), "door_ewo")); + GetComponent(SS3D_shared.GO.ComponentFamily.LargeObject).SetParameter(new ComponentParameter("ClosedSprite", typeof(string), "door_ew")); } protected override void ApplyAction(Atom a, Mob.Mob m) diff --git a/SS3d_server/Modules/PlayerManager.cs b/SS3d_server/Modules/PlayerManager.cs index 43b8d578ef..7c0efa71e2 100644 --- a/SS3d_server/Modules/PlayerManager.cs +++ b/SS3d_server/Modules/PlayerManager.cs @@ -6,14 +6,17 @@ using System.Text; using Lidgren.Network; using SS3D_shared; using ServerServices; +using ServerInterfaces; namespace SS3D_Server.Modules { - public class PlayerManager + public class PlayerManager: IService { /* This class will manage connected player sessions. */ public Dictionary playerSessions; + public ServerServiceType ServiceType { get { return ServerServiceType.PlayerManager; } } + public PlayerManager() { playerSessions = new Dictionary(); @@ -87,5 +90,6 @@ namespace SS3D_Server.Modules s.JoinGame(); } } + } } diff --git a/SS3d_server/Modules/PlayerSession.cs b/SS3d_server/Modules/PlayerSession.cs index 38b61792f1..6bea8c6a7d 100644 --- a/SS3d_server/Modules/PlayerSession.cs +++ b/SS3d_server/Modules/PlayerSession.cs @@ -10,10 +10,11 @@ using SS3D_shared; using SS3D_shared.GO; using SGO; using ServerServices; +using ServerInterfaces; namespace SS3D_Server.Modules { - public class PlayerSession + public class PlayerSession : IPlayerSession { /* This class represents a connected player session */ @@ -44,7 +45,10 @@ namespace SS3D_Server.Modules //Add input component. a.AddComponent(ComponentFamily.Input, SGO.ComponentFactory.Singleton.GetComponent("KeyBindingInputComponent")); a.AddComponent(ComponentFamily.Mover, ComponentFactory.Singleton.GetComponent("PlayerInputMoverComponent")); - a.AddComponent(ComponentFamily.Actor, ComponentFactory.Singleton.GetComponent("BasicActorComponent")); + BasicActorComponent actorComponent = (BasicActorComponent)ComponentFactory.Singleton.GetComponent("BasicActorComponent"); + actorComponent.SetParameter(new ComponentParameter("playersession", typeof(IPlayerSession), this)); + a.AddComponent(ComponentFamily.Actor, actorComponent); + attachedAtom = a; SendAttachMessage(); } diff --git a/ServerInterfaces/IPlayerSession.cs b/ServerInterfaces/IPlayerSession.cs new file mode 100644 index 0000000000..ad742bd630 --- /dev/null +++ b/ServerInterfaces/IPlayerSession.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace ServerInterfaces +{ + public interface IPlayerSession + { + } +} diff --git a/ServerInterfaces/ServerInterfaces.csproj b/ServerInterfaces/ServerInterfaces.csproj index 87db61da56..6ef6a7b431 100644 --- a/ServerInterfaces/ServerInterfaces.csproj +++ b/ServerInterfaces/ServerInterfaces.csproj @@ -41,6 +41,7 @@ + diff --git a/Tools/statsvn/genstats.bat b/Tools/statsvn/genstats.bat index 15cc13c281..bb020854dc 100644 --- a/Tools/statsvn/genstats.bat +++ b/Tools/statsvn/genstats.bat @@ -1,3 +1,4 @@ +@echo off if exist out goto continue :cleanup @@ -6,9 +7,9 @@ goto gen :gen mkdir out cd ..\..\ -svn log --xml -r228:HEAD -v > Tools\statsvn\out\svn.log +svn log -g --xml -v svn://games.ques.to/ss3d/ss3d/trunk > Tools\statsvn\out\svn.log cd Tools\statsvn\out -java -jar ..\statsvn.jar -include "SS3D_Client/**/*.cs:SS3d_server/**/*.cs:SS3D_shared/**/*.cs" svn.log ..\..\..\ +java -jar ..\statsvn.jar -threads 5 -include "**/*.cs" svn.log ..\..\..\ cd .. goto end