« first day (181 days earlier)      last day (3366 days later) » 
00:00 - 20:0020:00 - 00:00

8:10 PM
[Cardshifter/Cardshifter] build #684 for commit 87f2f1c8 on branch database passed
 
Ah right, got distracted, IntelliJ still doesn't properly work
It says it cannot import from cardshifter :|
Last time a reboot was enough to solve it, but today notk, sure it's on my end though
As Gradle worked
 
ok
I've had a bit of problems importing things in IntelliJ sometimes as well, @skiwi. If reboot doesn't help, it might be something in the project configuration.
my previous problems haven't been specific to Cardshifter though
 
Space engineers seems like a lot of fun but complicated too
 
@SimonAndréForsberg Did the file I sent help you any?
 
@Marc-Andre just like so many other games :)
@Phrancis yup
 
8:24 PM
@SimonAndréForsberg Well some are less complicated though. But building space ship in a minecraft way I consider this a bit more complicated than most game
 
@Marc-Andre I think I played that game a little bit. After reading way too many huuuuuuuuuge tutorial pop-ups in the game, I got sick of it and never played again.
games that contain too much text and have a too big learning curve are just.... no fun to learn.
 
@SimonAndréForsberg Still doesn't work, strange
 
@skiwi what is the exact problem?
 
It cannot resolve the imports
I know that it cannot load from your zomis repo for whatever reason, but last time I was able to work around that
 
@SimonAndréForsberg Never played it myself, I'm watching someone doing a LP (let's play) so I can't say if there is a big tutorial.
 
8:27 PM
@skiwi what imports? why can't it load from my repo?
@Marc-Andre the game might have become better since I played (let's hope so)
 
@SimonAndréForsberg IntelliJ cannot load artifacts from your repo because it's not a nexus repo, but that shouldn't be required imo
last time I thought Gradle managed to put the artifacts in IntelliJ cache, such that it did load them
 
@skiwi I'm able to load from my repo with IntelliJ.
 
@Marc-Andre the interface was not really good enough for me when it came to trying to place parts in a specific place with a specific rotation. Also if you one huge spaceship into another it slowed the game down pretty badly
i tried to shoot holes all the way through asteroids but that took too long to be much fun
 
@bazola Yeah it looks like a bit laggy on multiplayer world and large ship.
 
@SimonAndréForsberg:
That error thingie
 
8:31 PM
> Create README.md file for images
 
@skiwi you don't need to solve that to use the repo though
I believe that's just for indexing the whole repo, but you don't need that
 
Correct... but the import needs to get recognized by IntelliJ
 
@skiwi yes, but I think those are two separate problems. What are you trying to import?
 
import com.cardshifter.modapi.base.ECSGame;
import com.cardshifter.modapi.base.Entity;
import com.cardshifter.modapi.base.PlayerComponent;
 
@skiwi does it find anything in import com.cardshifter. ?
 
8:34 PM
@SimonAndréForsberg Nope, nothing
 
try to force IntelliJ to re-import gradle settings, and re-download all snapshots and stuff
and look over your project properties, to make sure nothing is wrong there
 
The redownloading snapshots and all is done
Gradle > Refresh external project worked!
 
It's Friday, Friday!I like writing documentation on Friday!
 
@Phrancis I prefer working things on Friday
 
8:37 PM
@skiwi things are working today!
(at least now)
 
I completely forgot what I was doing though
 
> Need to upload these to the content branch in the images/screenshots/ folder, then add the images to the webapp/WEB-INF/images.html directory.
[Cardshifter/Cardshifter] Zomis pushed 5 commits to gdx
[Cardshifter/Cardshifter] Zomis deleted branch deploy
[Cardshifter/Cardshifter] Zomis deleted branch travistest
 
So close...
@Override
protected void executeImpl() {
    Entity entity = ecsGame.newEntity();
    ECSAttributeMap ecsAttributeMap = ECSAttributeMap.createFor(entity);
    fullEntityLogEntry.getTagValues().forEach((tag, value) -> ecsAttributeMap.set(null, value));
}
Then I figure out I need to map the things to ECSAttribute instances
 
that tends to help, yes
you could create a class that implements ECSAttribute
and use a String constructor
and use equals and hashcode on that string
 
@SimonAndréForsberg Uh... for some reason my domain in my brain was restricted to use enums!, but it's an interface, duh
 
8:45 PM
@skiwi yup :) that's the precise reason I made it an interface :)
 
Now I do have some kind of resources and attributes... so I might be better off actually creating enums for them?
 
@skiwi you could, that's up to you
 
Ugh, I just noticed the template I used for creating all those pages earlier didn't have Marc's stuff put in... Time to do it over again yay!
 
[Cardshifter/Cardshifter] build #685 for commit 166229d2 on branch gdx passed
> I just noticed the template I used for creating all those pages earlier didn't have Marc's stuff put in... Need to update all the HTML files.
 
@Phrancis lol
 
8:54 PM
The amount of time I'd save if I just slowed down a bit and paid attention ;D
 
Well it's not that long too ;) just removed the part that the template replace :P
 
Yeah just a bunch of copy-pasta
 
> Update page-template.html
> Update contact-us.html
> Update cyborg-chronicles.html
> Update images.html
> Update new-mod.html
> Update news.html
> Update play-cardshifter.html
> Update project.html
> Update report-bug.html
> Update request-feature.html
 
Yeah one thing I want to do is instead of specifying the template in each view, have a real template and inject the content, but I don't know how to do this in thymeleaf yet
 
9:07 PM
switching session BRB
 
> added no sickness to some creatures which should have it
> fixed IntelliJ problem with PhrancisTest not discovering GameTest class.
 
Lots of commiiiits I see
 
@skiwi yes, but where are the ones for HearthMonitor!!
 
Ugh... are enums plural or singular?
Is it HearthStoneResources or HearthStoneResource?
Oh, have you also ever had the issue that IntelliJ refused to show javadoc? (The window popups, but is empty)
 
[Cardshifter/Cardshifter] build #686 for commit dc0ba87c on branch gdx passed
 
9:26 PM
@skiwi never experienced that
@skiwi when using the enum for resources, I tend to go with plural actional. It's like it's just a class containing them for me. But you do as you wish
as you'll probably never have HearthStoneResource res = HearthStoneResource.SOMETHING;
 
@SimonAndréForsberg How can I delete an entity from a game in the ECS?
 
@skiwi entity.remove(); ?
 
Ah, I was looking for a method in the ECSGame
I better hope this works!
No output, not sure if good, but at least no errors
What's the best way to print all information of an ECSGame instance?
Is that even possible?
Ah, silly me, I got no output because I never executed any command
 
@skiwi not sure if there is one at the moment.
 
@SimonAndréForsberg That's a shame :/
 
9:35 PM
might want to create a github issue if there isn't.
 
    public enum HearthStoneAttribute implements ECSAttribute {
        ZONE, FACTION, CARDTYPE, RARITY;

        private static final Map<String, HearthStoneAttribute> MAPPING =
            Arrays.stream(HearthStoneAttribute.values())
                .collect(Collectors.toMap(HearthStoneAttribute::toString, i -> i));
        static {
            MAPPING.forEach((key, value) -> System.out.println(key + " / " + value));
        }
Shouldn't this print stuff?
 
when the enum is first initialized, yes, I believe so.
 
Strange things
static {
    System.out.println(MAPPING.size());
    MAPPING.forEach((key, value) -> System.out.println(key + " / " + value));
}
It doesn't even print the size
This is not good
 
> Update images.html

Added content and image links. Related to Issue #9.
> Page content and image links have been added to images.html. Now only need to add the image files to the relevant folders, and test and format images for ideal sizing.
 
@skiwi then I guess the map is somehow empty when it runs?
or it doesn't run at all?
ah, of course it doesn't run at all
what am I thinking?
or Map is null when it runs, causing an exception that is not logged?
I think Map might be null actually...
are you ever using the HSAttributes?
because if you are not, it never runs.
 
9:50 PM
@SimonAndréForsberg You mean the static initializer doesn't run then?
 
@skiwi exactly.
 
The trick is that I'm using it somewhere
 
A class that is never used don't run static initializers. You have any idea how much crap would run otherwise?
@skiwi how are you using it?
 
I moved the call up right now
I'm not going to print anything
4
ZONE / ZONE
FACTION / FACTION
RARITY / RARITY
CARDTYPE / CARDTYPE
[Lcom.github.skiwi2.hearthmonitor.model.HearthStoneMod$HearthStoneAttribute;@50040f0c
Like a direct call
 
and where does System.out lead?
 
9:51 PM
that one works
 
Oh
CRAP
public static boolean isHearthStoneAttribute(final String attribute) {
    return HearthStoneResource.hasResource(attribute);
}
This, kids, is why you never skip unit tests.
2
 
HearthStoneResource.hasResource ?
 
@SimonAndréForsberg In a isHearthStoneAttribute method call..
 
but what is hasResource ?
 
9:54 PM
    public enum HearthStoneResource implements ECSResource {
        ATK, HEALTH, CONTROLLER, ENTITY_ID, COST, CREATOR, ZONE_POSITION, CANT_PLAY, BATTLECRY;

        private static final Map<String, HearthStoneResource> MAPPING =
            Arrays.stream(HearthStoneResource.values())
                .collect(Collectors.toMap(HearthStoneResource::toString, i -> i));

        public static boolean hasResource(final String resource) {
            Objects.requireNonNull(resource, "resource");
            return MAPPING.containsKey(resource);
May look a bit ugly... I know about HearthStoneResource.ofValue(), but that one throws an exception if it cannot find the one with corresponding name
 
I think your way is fine
I'd name it mappings though, lowercase. It is not a constant (it is mutable)
(I have the same complaint about your LOGGER variables btw)
Loggers should be named logger
 
What is the best way to check if an entity has an attribute or resource map?
Shouldn't all static variables be upper cased?
 
@skiwi no, they should not.
@skiwi the attribute retrievers should take care of that mostly, I think. Otherwise, you can use entity.hasComponent
 
@SimonAndréForsberg Can it deal with a situation where an entity may not have such map attached?
Or is there always an empty map implicitely attached
@SimonAndréForsberg Huh... That would be new to me then
 
10:00 PM
@skiwi Honestly, I am not sure. It's been a while since I wrote that code. And it could use a look-over.
@skiwi depends on what you are doing, I think.
 
That's a bit inconvinent then, will try to figure some stuff out myself
 
How come you're asking?
I wonder how anyone, anywhere, anyhow, could ever write a TCG without using a whole bunch of tests!
 
@SimonAndréForsberg I'm playing around right now
 
> added healing functionality for Field Medic
 
What does the gdx branch stand for?
 
10:08 PM
@Phrancis A Field Medic shouldn't be able to give more health than max-health, right?
@skiwi libgdx.
 
Ah ok
 
it contains the LibGDX version of the game.
 
Wee, new progress
com.cardshifter.modapi.base.ECSGame@4ec6a292
Hero of controller 1: Health 30
Hero of controller 2: Health 30

com.cardshifter.modapi.base.ECSGame@724af044
Hero of controller 1: Health 30
Hero of controller 2: Health 30

com.cardshifter.modapi.base.ECSGame@63e2203c
Hero of controller 1: Health 30
Hero of controller 2: Health 30
 
I know I'm technically working on the wrong branch right now, but wwhatever...
 
    private void init() throws Exception {
        List<Game> games = readGamesFromLog(logFile);

        for (Game game : games) {
            ECSGame ecsGame = game.getInitialGame();
            game.getCommands().forEach(Command::execute);
            System.out.println(ecsGame);
            ecsGame.findEntities(entity -> (entity.hasComponent(ECSResourceMap.class) && entity.hasComponent(ECSAttributeMap.class)))
                .stream()
                .filter(entity -> Objects.equals(AttributeRetriever.forAttribute(HearthStoneAttribute.CARDTYPE).getFor(entity), "HERO"))
How ugly does that code look?
 
10:10 PM
@SimonAndréForsberg Good question. It would be most intuitive if a player couldn't go over max health, that could be an exploit otherwise
 
@Phrancis In HS it's done by increasing the max health
 
LMFAO
2
 
@skiwi healing and increasing health are two very different things in HS though
 
@SimonAndréForsberg Ah, true
@SimonAndréForsberg What do you want to say by that? ;-)
I think I'll leave it at this and clean this up over the weekend
I don't have more interesting data to obtain :(
Because attack log entries are not implemented yet
Next one interesting would be when an entity transitions to another zone...
but I feel like I need some kind of viewer functionality that allows you to step through the commands
 
10:16 PM
@SimonAndréForsberg I need a bit of content for the Projects page... could you just shoot me a few links I can copy-pasta from or link to regarding the main technologies that power Cardshifter?
(I'd even take Wikipedia links)
 
btw
[Power] GameState.DebugPrintPower() - ACTION_START Entity=skiwi SubType=TRIGGER Index=-1 Target=0
[Power] GameState.DebugPrintPower() -     SHOW_ENTITY - Updating Entity=[id=59 cardId= type=INVALID zone=DECK zonePos=0 player=2] CardID=GVG_065
[Power] GameState.DebugPrintPower() -         tag=TRIGGER_VISUAL value=1
[Power] GameState.DebugPrintPower() -         tag=HEALTH value=4
[Power] GameState.DebugPrintPower() -         tag=ATK value=4
[Power] GameState.DebugPrintPower() -         tag=COST value=3
 
@skiwi it isn't that bad though, honestly :)
 
Wtf could FORGETFUL be?
GVG_065, let's see if I can trace that back
 
Ha, found the guy!
 
10:18 PM
@SimonAndréForsberg Merci :)
 
Forgetful means it has 50% chance to attack wrong enemy
 
@skiwi they implemented that as FORGETFUL? Hmm....
 
So the 50% chance is static...
UGLY!
Also... this is how I've done the FullEntityCommand
@Override
protected void executeImpl() {
    newEntity = ecsGame.newEntity();
    ECSResourceMap ecsResourceMap = ECSResourceMap.createFor(newEntity);
    ECSAttributeMap ecsAttributeMap = ECSAttributeMap.createFor(newEntity);
    fullEntityLogEntry.getTagValues().forEach((tag, value) -> {
        if (HearthStoneMod.isHearthStoneResource(tag)) {
            ecsResourceMap.set(HearthStoneMod.getHearthStoneResource(tag), Integer.parseInt(value));    //TODO catch NFE for robustness?
        }
        else if (HearthStoneMod.isHearthStoneAttribute(tag)) {
Also loops reasonable?
 
@skiwi my thought exactrly
 
@Override
protected void undoImpl() {
    newEntity.destroy();
}
 
10:22 PM
[Cardshifter/Cardshifter] build #687 for commit 31e57067 on branch gdx passed
 
Anyway TTGTB
 
night @skiwi
 
10:38 PM
@SimonAndréForsberg @Marc-Andre What do you think?
 
@Phrancis looks like you might have copy/pasted all the descriptions
I think it's better to write them in our own words
 
Good observation, that's exactly what I did (hence the block quotes)
Unfortunately I don't know enough about any of it to write my own, however, if you would like to take a stab at it I'll be happy to update it
 
either state that the text is from the documentations, or rewrite the texts. because of copyright stuff.
I probably won't take a stab at it myself
 
Alright let me put a disclaimer in there
Should be good enough for now, we can change it later when time allows
Actually, let me remove the definitions, read some terms of use from Oracle and it's not worth it, I'll just leave the links
As @Duga would say: "Good enough!"
2
 
Libgdx ---> libGDX
</nitpick>
 
10:50 PM
Ok
 
> added MAX_HEALTH to players. Healing with Field Medic does not go above MAX_HEALTH
> Update project.html

Updated `project.html` file with information and links about core development technologies.
> Added information and links about core development technologies. This is good enough for now, we can add more in the future as needed.
 
@Duga is going to sleep well tonight after all this work.
 
@Phrancis ^^
 
Damn
 
[Cardshifter/Cardshifter] build #688 for commit 59d28f96 on branch gdx passed
 
11:04 PM
Well, I think we've all kicked some ass today.
3
BBS
 
11:23 PM
whoops
wanted to deny one action on an entity and denied all actions instead on the minion.
You should still be allowed to play the creature, just not attack with it!
2 hours ago, by skiwi
This, kids, is why you never skip unit tests.
 
Back
Java update, nice!
Downloading that STS IDE now @Marc-Andre
 
good :D
 
Hopefully won't need to much help setting it up
 
> added DenyActionForName, and denying ATTACK for some creatures
> improved Entity.apply method by returning this and adding javadoc, and renaming parameter
 
Um. How the heck do I install this.
Guess I'll start with the README XD
 
11:38 PM
[Cardshifter/Cardshifter] build #689 for commit 129cea31 on branch gdx passed
 
@Phrancis You don't, I believe. You just run it.
Try double-click on the STS.app on the bottom.
 
Ah. Let me try
Hahahahahah
Thanks Apple
There we go
So @Marc-Andre How do I get started connecting to the giithub?
 
@Phrancis have you imported the project?
 
11:54 PM
Um, no I guess not
 
then that would be a good start :)
 
Got to go sorry ! have fun @all!
 
Need to hit the terminal first I'm guessing and set up a git directory and pull from git?
@Marc-Andre 'night!
Owait
Found it
Cloning now
 
> added allowCounterAttack filter in AttackSystems, also made some creatures deny counter attacks
 
Ok it says it's cloned, apparently. But no idea where to find it in the IDE...
 
11:58 PM
@Phrancis File -> Import
 
00:00 - 20:0020:00 - 00:00

« first day (181 days earlier)      last day (3366 days later) »